如何在 tf 模板中的条件语句中删除行?

red*_*888 4 terraform

我在模板中这样做:

%{ if myvar != "sss" }
bunch
of
text
%{ else }
some 
other 
text
%{ endif }
Run Code Online (Sandbox Code Playgroud)

这可行,但 if 语句所在的位置有一个新行。我可以将文本块的第一行放在同一行,但我认为这不可读:

%{ if myvar != "sss" }bunch
of
text
%{ else }some
other 
text%{ endif }
Run Code Online (Sandbox Code Playgroud)

在 Go 模板中。我可以做这样的事情来咀嚼新行:

%{- if myvar != "sss" }
bunch
of
text
%{- else }
some 
other 
text
%{- endif }
Run Code Online (Sandbox Code Playgroud)

你如何在 tf 中做到这一点?

小智 13

实际上,~当您尝试创建 yaml 文件时,最终可能会导致您配置错误

foo:
  aaa: aaa
  %{ if enabled ~}
  bar:
    baz: ${baz}
  %{ endif ~}
  bbb: bbb
Run Code Online (Sandbox Code Playgroud)

给你错误的yaml,如下所示:

> templatefile("sss.yaml", {enabled=true,baz="baz"})
foo:
  aaa: aaa
    bar:
    baz: baz
    bbb: bbb
Run Code Online (Sandbox Code Playgroud)

这个将返回正确的 yaml 但带有新的 lins

foo:
  aaa: aaa
  %{ if enabled }
  bar:
    baz: ${baz}
  %{ endif }
  bbb: bbb
Run Code Online (Sandbox Code Playgroud)
> templatefile("sss.yaml", {enabled=true,baz="baz"})
foo:
  aaa: aaa
  
  bar:
    baz: baz
  
  bbb: bbb

Run Code Online (Sandbox Code Playgroud)

所以要获得正确的文件,您必须在~表达式之前和之后添加

foo:
  aaa: aaa
  %{~ if enabled ~}
  bar:
    baz: ${baz}
  %{~ endif ~}
  bbb: bbb
Run Code Online (Sandbox Code Playgroud)
> templatefile("sss.yaml", {enabled=true,baz="baz"})
foo:
  aaa: aaa
  bar:
    baz: baz
  bbb: bbb
Run Code Online (Sandbox Code Playgroud)