使 Terraform 资源键多行

Posted

技术标签:

【中文标题】使 Terraform 资源键多行【英文标题】:Make Terraform resource key multiline 【发布时间】:2020-06-28 12:17:49 【问题描述】:

我在 Terraform 中声明了一个 google_logging_metric 资源(使用版本 0.11.14

我有以下声明

resource "google_logging_metric" "my_metric" 
  description = "Check for logs of some cron job\t"
  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"
  


有没有办法让filter 字段变成多行?

local 变量 "$local.k8s_name 的存在使它有点挑战。

【问题讨论】:

terraform.io/docs/configuration-0-11/variables.html#strings 我通过谷歌搜索发现terraform multiline string 我的部分问题是这部分=\"$local.k8s_name\"是否被正确解析 【参考方案1】:

来自the docs

字符串值很简单,表示值映射的基本键 其中键是变量名。一个例子是:

variable "key" 
  type    = "string"
  default = "value"

可以使用 heredoc 语法提供多行字符串值。

variable "long_key" 
  type = "string"
  default = <<EOF
This is a long key.
Running over several lines.
EOF

【讨论】:

【参考方案2】:

以下格式是推荐的方式。

variable "key" 
  type    = string
  default = "value"


# A multi-line string value can be provided using heredoc syntax.

variable "long_key" 
  type = string
  default = <<EOF
This is a long key.
Running over several lines.
EOF


【讨论】:

以上是关于使 Terraform 资源键多行的主要内容,如果未能解决你的问题,请参考以下文章

Terraform 会根据运行时环境不断更改多行 heredoc 的行尾

如何使 Terraform 提供程序依赖于正在创建的资源

通过 Terraform 在 AWS 上进行路由传播

如何使 Terraform archive_file 资源获取对源文件的更改?

如何使用 terraform 在 AWS API Gateway method_response 中指定内容类型标头?

text 多行变量导出和terraform适用