Terraform:heredoc 锚点中的无效字符

2024-01-14

我正在尝试在中使用多行字符串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(使用前将#替换为@)

Terraform:heredoc 锚点中的无效字符 的相关文章

随机推荐