我有一个packer文件,我试图解析这个文件,这样我就可以得到特定的脚本,例如,在下面的文件中,我只希望在我的结果中包含任何mysql,例如install-mysql.sh,init-mysql.sh (试图为此使用powershell )。
{
"variables": {
"image_iso": "",
"image_sum": ""
},
"builders": [
{
"type": "virtualbox-iso",
"vm_name": "box",
"boot_wait": "10s",
"disk_size": 51200,
"guest_os_type": "RedHat_64"
}
],
"provisioners": [
{
"type": "shell",
"scripts": [
"packer/provisioners/common/base.sh",
"packer/provisioners/common/tcp-kernel-param.sh",
"packer/provisioners/web/create-user-webmaster.sh",
"packer/provisioners/web/install-nginx.sh",
"packer/provisioners/web/advanced-nginx.sh",
"packer/provisioners/web/configure-vhost.sh",
"packer/provisioners/mysql/mysql-kernel-param.sh",
"packer/provisioners/mysql/install-mysql.sh",
"packer/provisioners/mysql/init-mysql.sh",
"packer/provisioners/redis/install-redis.sh",
"packer/provisioners/redis/redis-kernel-param.sh",
"packer/provisioners/misc/install-wandisco-git.sh",
"packer/provisioners/misc/install-chrony.sh",
"packer/provisioners/rails/install-required_package.sh",
"packer/provisioners/rails/install-rbenv.sh",
"packer/provisioners/common/enable-defence-portscan.sh",
"packer/provisioners/common/vagrant.sh",
"packer/provisioners/common/vmware.sh",
"packer/provisioners/common/cleanup.sh"
],
"override": {
"virtualbox-iso": {
"execute_command": "echo 'vagrant'|sudo -S sh '{{.Path}}'"
}
}
},
{
"type": "shell",
"script": "packer/provisioners/common/virtualbox.sh",
"only": [
"virtualbox-iso"
],
"override": {
"virtualbox-iso": {
"execute_command": "echo 'vagrant'|sudo -S sh '{{.Path}}'"
}
}
}
],
"post-processors": [
{
"keep_input_artifact": false,
"type": "vagrant",
"output": "./packer/vagrant-boxes/CentOS-7-x86_64-Minimal.box"
}
]
}我目前使用powershell解析了这个文件。
$jsonfile = Get-Content -Raw .\software.json | ConvertFrom-Json
write-output $jsonfile.provisioners.scriptspacker/provisioners/common/base.sh
packer/provisioners/common/tcp-kernel-param.sh
packer/provisioners/web/create-user-webmaster.sh
packer/provisioners/web/install-nginx.sh
packer/provisioners/web/advanced-nginx.sh
packer/provisioners/web/configure-vhost.sh
packer/provisioners/mysql/mysql-kernel-param.sh
packer/provisioners/mysql/install-mysql.sh
packer/provisioners/mysql/init-mysql.sh
packer/provisioners/redis/install-redis.sh
packer/provisioners/redis/redis-kernel-param.sh
packer/provisioners/misc/install-wandisco-git.sh在powershell中,我不确定如何解析上面的输出,以获得我在问题中提到的文件。
sqlFiles
---------------
install-mysql.sh
init-mysql.sh发布于 2022-09-15 13:54:19
使用Where-Object cmdlet筛选列表:
$mysqlScripts = $jsonfile.provisioners.scripts |Where-Object {$_ -match 'mysql'}如果要删除前面的路径,请使用Split-Path -Leaf
$mysqlScripts |Split-Path -Leafhttps://stackoverflow.com/questions/73732330
复制相似问题