如何在地形中多行字符串

  • 本文关键字:字符串 terraform
  • 更新时间 :
  • 英文 :


我正在尝试下面的一个例子

resource "google_logging_metric" "my_metric" { 
description = "Check for logs of some cron jobt" 
name        = "mycj-logs" 
filter      = "resource.type="k8s_container" AND resource.labels.cluster_name="${local.k8s_name}" AND resource.labels.namespace_name="workable" AND resource.labels.container_name="mycontainer-cronjob" nresource.labels.pod_name:"my-pod"" 
project     = "${data.terraform_remote_state.gke_k8s_env.project_id}" 

metric_descriptor { 
metric_kind = "DELTA" 
value_type  = "INT64" 
} 
}

是否有办法使过滤器字段多行?

如果是格式化输出的问题,这个答案涵盖了它。

如果你想让你的代码更可读,即分割长字符串成多个子句与一个共同的分隔符,我发现join()有用:

resource "google_logging_metric" "my_metric" { 
description = "Check for logs of some cron jobt" 
name        = "mycj-logs" 
project     = "${data.terraform_remote_state.gke_k8s_env.project_id}" 
filter = join(" AND ",
[
"resource.type="k8s_container"",
"resource.labels.cluster_name="${local.k8s_name}"",
"resource.labels.namespace_name="workable"",
"resource.labels.container_name="mycontainer-cronjob"",
"resource.labels.pod_name:"my-pod""
]
) 
metric_descriptor { 
metric_kind = "DELTA" 
value_type  = "INT64" 
} 
}

注意,以这种方式设置代码表明,在OP中,filter表达式中最后一个和第二个最后子句之间可能(也可能不)缺少AND。

由于原始表达式是一行,这很难看到,并且读取/维护速度很慢。我认为使用join表达式的意图更清晰。

在Google中快速搜索会将您发送到文档:https://www.terraform.io/docs/language/expressions/strings.html#heredoc-strings

你只需要写像

这样的东西
<<EOT
hello
world
EOT

最新更新