在Gitlab管道中将Shell变量传递到Packer Build变量中

时间:2020-08-18 17:46:59

标签: bash gitlab gitlab-ci packer hashicorp-packer

我需要使用内置的-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管道中失败,而不是在我自己的机器上失败?

0 个答案:

没有答案