我需要使用内置的-var参数将特定变量传递给Hashicorp Packer。当我通过shell脚本在本地运行它时,我已经能够使其正常工作,但是当我通过gitlab管道执行相同的操作时,变量值永远不会传递,并且打包程序无法接收要填充的var值。这是我的简化形式,没有所有高级设置:
ci_script.sh
PUBLIC_IP="127.0.0.1"
echo $PUBLIC_IP
packer build -var "jump_host_ip=${PUBLIC_IP}" -force ./ami.json
在ami.json配置文件的打包程序端,我有此设置。 jump_host_ip变量用于各种与问题无关的配置。
"variables":
{
"jump_host_ip": ""
}
再次,这在我的Mac上可以正常工作,但在gitlab中不起作用,所以我认为这是权限,因为我已经能够在gitlab和local中都很好地回显了内容,但只要packer命令运行,该变量没有值/内容。下面是我如何设置打包程序脚本而没有所有多余内容的类似副本。
build_debian:
stage: build_debian
script:
- PUBLIC_IP="127.0.0.1"
- echo $PUBLIC_IP
- packer build -var "jump_host_ip=${PUBLIC_IP}" -force ./ami.json
我还尝试了无数种不同的方式来传递和逃逸该变量,例如:
packer build -var "jump_host_ip=${PUBLIC_IP}" -force ./ami.json
my_var=$(packer build -var "jump_host_ip=${PUBLIC_IP}" -force ./ami.json)
packer build -var jump_host_ip=$PUBLIC_IP -force ./ami.json
var_storage="jump_host_ip=$PUBLIC_IP"
packer build -var "$var_storage" -force ./ami.json
为什么这只会在gitlab管道中失败,而不是在我自己的机器上失败?