我正在尝试在中使用多行字符串provisioner "remote-exec"
我的 Terraform 脚本块。然而每当我使用EOT
文档和各种示例中概述的语法我收到一个错误,抱怨有:invalid characters in heredoc anchor
.
这是一个简单的例子provisioner "remote-exec"
收到此错误(两种类型的 EOT 分别尝试时都会收到此错误):
provisioner "remote-exec" {
inline = [
<< EOT
echo hi
EOT,
<< EOT
echo \
hi
EOT,
]
}
Update:这是可行的解决方案,如果您遇到此问题,请仔细阅读,因为 terraform 在 EOF 方面非常挑剔:
provisioner "remote-exec" {
inline = [<<EOF
echo foo
echo bar
EOF
]
}
请注意,如果您想使用 EOF,则在 a 中使用的所有命令provisioner "remote-exec"
块必须位于 EOF 内。 EOF 和非 EOF 不能同时具有其中之一。
EOF 的第一行必须这样开始,并且此行之后不能有任何空格<<EOF
否则它会抱怨有invalid characters in heredoc anchor
:
inline = [<<EOF
然后你的 EOF 必须像这样结束EOF
与相同的缩进]
EOF
]
Terraform 中的 Heredocs 对周围的空白特别有趣。
将示例更改为以下内容似乎可以消除heredoc特定错误:
provisioner "remote-exec" {
inline = [<<EOF
echo hi
EOF,
<<EOF
echo \
hi
EOF
]
}
尽管内联数组是应该在远程主机上运行的命令列表,但您根本不需要在这里使用多个heredocs。使用跨多行命令的定界文档应该适合您:
provisioner "remote-exec" {
inline = [<<EOF
echo foo
echo bar
EOF
]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)