【发布时间】:2016-10-19 14:21:19
【问题描述】:
我正在尝试在我的 terraform 脚本的 provisioner "remote-exec" 块中使用多行字符串。然而,每当我使用文档和各种示例中概述的EOT 语法时,我都会收到一个错误,抱怨有:invalid characters in heredoc anchor。
以下是收到此错误的简单provisioner "remote-exec" 示例(两种类型的 EOT 在单独尝试时都会收到此错误):
provisioner "remote-exec" {
inline = [
<< EOT
echo hi
EOT,
<< EOT
echo \
hi
EOT,
]
}
更新:这是可行的解决方案,如果您遇到此问题,请仔细阅读,因为 terraform 在 EOF 方面非常挑剔:
provisioner "remote-exec" {
inline = [<<EOF
echo foo
echo bar
EOF
]
}
请注意,如果您想使用 EOF,则在 provisioner "remote-exec" 块中使用的所有命令都必须在 EOF 内。您不能同时拥有 EOF 和非 EOF 之一。
EOF 的第一行必须这样开始,并且在<<EOF 之后的这一行中不能有任何空格,否则它会抱怨有invalid characters in heredoc anchor:
inline = [<<EOF
然后,您的 EOF 必须以 EOF 与 ] 相同的缩进这样结束
EOF
]
【问题讨论】:
-
请接受答案
标签: terraform