我很难将输入参数传递给打包器配置脚本.我尝试了各种选择,但没有快乐.
目标是我的provision.sh应该接受我在打包程序构建期间发送的输入参数.
packer build -var role = abc test.json
我能够在json文件中获取用户变量但是我无法传递它的配置脚本.我必须根据输入参数做出决定.
我试过类似的东西
"provisioners":
{
"type": "shell",
"scripts": [
"provision.sh {{user `role`}}"
]
}
Run Code Online (Sandbox Code Playgroud)
但是,打包器验证本身失败,没有此类文件/目录错误消息.
如果有人可以帮助我,那将是真正的帮助.
提前致谢.
Ric*_*sen 17
您应该使用该environment_vars选项,请参阅文档Shell Provisioner - environment_vars.
例:
"provisioners": [
{
"type": "shell"
"environment_vars": [
"HOSTNAME={{user `vm_name`}}",
"FOO=bar"
],
"scripts": [
"provision.sh"
],
}
]
Run Code Online (Sandbox Code Playgroud)
如果您的脚本已配置为使用参数;您只需要运行它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`}}"]
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5979 次 |
| 最近记录: |