我正在尝试下面的一个例子
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