Terraform使用EOT添加文件内容时报错,请求排查问题原因
Terraform local_file 多行内容语法错误排查
我帮你排查下这个报错的原因哈~你遇到的「Expected the start of an expression, but found an invalid expression token」错误,基本是heredoc(多行字符串)的语法格式不符合Terraform要求导致的。
Terraform对heredoc的结束标记有严格规则:
- 不带减号的
<<EOT格式:结束标记EOT必须单独占一行,而且完全顶格,不能有任何前置空格或缩进 - 如果想让结束标记和代码块保持缩进对齐,需要用带减号的
<<-EOT格式,此时结束标记前允许使用**制表符(Tab)**缩进,但空格缩进依然不被允许
给你修正后的两种示例:
方式1:顶格结束标记(适合不需要缩进对齐的场景)
terraform { required_version = "~>0.13" required_providers { local = "~>1.4" } } resource "local_file" "literature" { filename = "art_of_war.txt" content = <<EOT Hello world EOT }
方式2:带减号的heredoc(支持制表符缩进,代码更整洁)
terraform { required_version = "~>0.13" required_providers { local = "~>1.4" } } resource "local_file" "literature" { filename = "art_of_war.txt" content = <<-EOT Hello world EOT }
注意:第二种方式里的EOT前面只能用Tab缩进,要是用空格的话还是会报错哦~
内容的提问来源于stack exchange,提问作者satish
相关产品推荐
相关产品推荐

