问题描述
我有一个 cloud-init 配置文件,用于使用 Terraform 在 AWS 中启动 VM,我还想使用 Multipass 在本地运行以进行测试和调试。
cloud-init 文件包含一些 Terraform 需要重写的 shell 脚本,以便它们将变量引用为 $$var
而不仅仅是 $var
。它还为主机名使用模板变量。
为了能够在云和本地使用相同的配置文件,我想我可以使用以下命令来扩展模板并启动 Multipass VM,而无需手动替换字符串:
terraform console <<< "templatefile(\"cloud-init.yaml\",{hostname: \"test\"})" | multipass launch -n test --cloud-init -
但事实证明 templatefile
函数将其输出包装在 heredoc 中:
<<EOT
... contents ...
EOT
Multipass 当然不理解这个语法并打印(相当无用的)错误消息:
launch failed: operator[] call on a scalar (key: "users")
理想情况下,Terraform 命令应该能够在没有 heredoc 包装器的情况下渲染文件。但或者,是否有 shell 技巧可以使此工作正常进行?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)