在 Packer Ansible provisioner 块中引用 $HOME 目录

问题描述 投票:0回答:0

我正在为我的 Packer 构建作业使用 HCL 模板。我有一个 Ansible 目录,其中包含剧本和我的

packer/
项目树中的角色,我正尝试将其用作供应商。这一切都位于我用来运行作业的 EC2 实例的
$HOME
目录下。我似乎无法在我的 Packer 构建器模板中的供应块中获得剧本文件的正确路径。我想做的是以某种方式引用主目录作为其余路径的前缀。

我见过使用 JSON 模板执行以下操作的解决方案:

"home": "{{env HOME}}"
and then
account_file: "{{ user home}}/.secrets/gcp-{{ userenv }}.json"

是否有类似的东西可以用于 HCL 模板?

到目前为止,我已经尝试过:

  provisioner "ansible" {
    playbook_file = "$HOME/packer/ansible/playbook.yml"
  }
}

这失败了,因为 Packer 将

$HOME
读取为原始字符串而不是系统环境变量。

我也试过:

  provisioner "ansible" {
    playbook_file = "${env.HOME}/packer/ansible/playbook.yml"
  }
}

这失败了:

Unknown variable; There is no variable named "env".

ansible packer hashicorp-packer
© www.soinside.com 2019 - 2024. All rights reserved.