如何在打包程序提供脚本中传递参数?
How to pass argument in packer provision script?
我正在努力将输入参数传递给加壳程序配置脚本。我尝试了各种选择但没有快乐。
Objective 是我的 provision.sh 应该接受我在打包程序构建期间发送的输入参数。
packer build -var role=abc test.json
我能够在 json 文件中获取用户变量,但是我无法将其传递给配置脚本。我必须根据输入参数做出决定。
我试过
"provisioners":
{
"type": "shell",
"scripts": [
"provision.sh {{user `role`}}"
]
}
但打包程序验证本身失败,没有这样的 file/directory 错误消息。
如果有人能在这方面帮助我,那将是真正的帮助。
提前致谢。
您应该使用 environment_vars
选项,请参阅文档 Shell Provisioner - environment_vars。
示例:
"provisioners": [
{
"type": "shell"
"environment_vars": [
"HOSTNAME={{user `vm_name`}}",
"FOO=bar"
],
"scripts": [
"provision.sh"
],
}
]
如果您的脚本已配置为使用参数;你只需要 运行 它作为 inline
而不是 scripts
数组。
为此,脚本必须已经存在于系统中 - 您可以通过使用 file
配置程序将其复制到系统来完成此操作。
"provisioners": [
{
"type": "file",
"source": "scripts/provision.sh",
"destination": "/tmp/provision.sh"
},
{
"type": "shell",
"inline": [
"chmod u+x /tmp/provision.sh",
"/tmp/provision.sh {{user `vm_name`}}"]
}
]
我正在努力将输入参数传递给加壳程序配置脚本。我尝试了各种选择但没有快乐。
Objective 是我的 provision.sh 应该接受我在打包程序构建期间发送的输入参数。
packer build -var role=abc test.json
我能够在 json 文件中获取用户变量,但是我无法将其传递给配置脚本。我必须根据输入参数做出决定。
我试过
"provisioners":
{
"type": "shell",
"scripts": [
"provision.sh {{user `role`}}"
]
}
但打包程序验证本身失败,没有这样的 file/directory 错误消息。
如果有人能在这方面帮助我,那将是真正的帮助。
提前致谢。
您应该使用 environment_vars
选项,请参阅文档 Shell Provisioner - environment_vars。
示例:
"provisioners": [
{
"type": "shell"
"environment_vars": [
"HOSTNAME={{user `vm_name`}}",
"FOO=bar"
],
"scripts": [
"provision.sh"
],
}
]
如果您的脚本已配置为使用参数;你只需要 运行 它作为 inline
而不是 scripts
数组。
为此,脚本必须已经存在于系统中 - 您可以通过使用 file
配置程序将其复制到系统来完成此操作。
"provisioners": [
{
"type": "file",
"source": "scripts/provision.sh",
"destination": "/tmp/provision.sh"
},
{
"type": "shell",
"inline": [
"chmod u+x /tmp/provision.sh",
"/tmp/provision.sh {{user `vm_name`}}"]
}
]