我正在尝试使用 terraform 提供 EC2 实例,将 cloudinit 配置文件作为用户数据传递给实例。
作为 cloudinit 配置的一部分,我正在设置环境变量,其中一些变量是 JSON 字符串。
由 terraform 生成并传递给实例的用户数据看起来是正确的,用单引号括起来,但是当环境变量被写入服务器上的文件时,引号被删除,这导致了问题
这里是传递给 EC2 实例的用户数据的示例片段
#cloud-config
environment:
var: '{"key": "value"}'
然后在服务器上的环境文件(
/etc/environment
)看起来像这样
var={"key": "value"}
但是我需要在
/etc/environment
中仍然被单引号包围
var='{"key": "value"}'
关于我如何做到这一点有什么想法吗?我尝试使用
\'
转义引号,但这不是有效的 YAML,因此用户数据因错误而失败,对此有任何想法将不胜感激。
看来你可能想要一个块来存放你的 YAML 值。您可以使用
>
来做到这一点。
#cloud-config
environment:
var: >
'{"key": "value"}'