0

我有一些 Packer 模板,它们生成配置文件的内容,然后我需要将其输出到配置文件。最终目标是将这些文件上传到远程机器,然后使用 shell 配置程序,但我似乎无法弄清楚这样做的正确方法。我当前的解决方案依赖于本地 shell 配置器来编写文件,然后我将它们上传到远程,然后运行远程配置器。

就像是,

locals {
  foo = "bar"
  foo_generated = templatefile("${path.root}/template-which-uses-foo.pkrtpl", foo)
}

provisioner "shell-local" {
  inline = [
    "cat >${path.root}/generated/foo.conf <<'STR'\n${local.foo_generated}"
  ]
}

provisioner "file" {
  source      = "${path.root}/generated/"
  destination = "/tmp/"
}

provisioner "shell" {
  inline = [
    "/tmp/do-something-with-foo-conf.sh",
  ]
}

虽然这可行,但文件生成看起来很尴尬,我想简化它并使其更健壮。

source除了“基本”ec2 源之外,我最初从为配置文件定义es(其中有很多)开始。但是,从日志来看,Packer 似乎为构建块内的每个源运行配置程序,因此这似乎不是一个好主意。

有更好的选择来实现这一点吗?

4

0 回答 0