我试图在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,
]
}
Run Code Online (Sandbox Code Playgroud)
更新:这是工作解决方案,如果您遇到此问题,请仔细阅读,因为在EOF方面,terraform非常挑剔:
provisioner "remote-exec" {
inline = [<<EOF
echo foo
echo bar
EOF
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果要使用EOF,则provisioner "remote-exec"
块中使用的所有命令都必须位于EOF中.你不能同时拥有EOF和非EOF.
EOF的第一行必须像这样开始,你不能在这行中有任何空格,<<EOF
否则它会抱怨invalid characters in heredoc anchor
:
inline = [<<EOF
Run Code Online (Sandbox Code Playgroud)
你的EOF必须以这样的方式结束,与之EOF
相同的缩进]
EOF
]
Run Code Online (Sandbox Code Playgroud)
Terraform中的Heredocs对周围的空白特别有趣.
将您的示例更改为以下内容似乎摆脱了heredoc特定错误:
provisioner "remote-exec" {
inline = [<<EOF
echo hi
EOF,
<<EOF
echo \
hi
EOF
]
}
Run Code Online (Sandbox Code Playgroud)
您根本不需要多个heredoc,因为内联数组是应该在远程主机上运行的命令列表.使用带有多行命令的heredoc应该可以正常工作:
provisioner "remote-exec" {
inline = [<<EOF
echo foo
echo bar
EOF
]
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5282 次 |
最近记录: |