在 AWS 的 Terraform 标签中组合变量值和明确定义的变量值
Combine Variable Values and Explicitly Defined Variable Values in Terraform Tags for AWS
目前,我正在处理一项要求,使 AWS 资源的 Terraform 标签更加模块化。在这种情况下,将有一个标签 'Function' 对每个资源都是唯一的,其余要附加的标签将应用于所有资源。我想要做的是将每个资源的唯一 'Function' 值与其他标签结合起来。
这是我目前得到的:
tags = {
Resource = "Example",
"${var.tags}
这个标签值在 variables.tf 文件中定义为一个地图,如下所示:
variable "tags" {
type = map
description = "Tags for infrastructure resources."
}
并在 tfvars 文件中填充:
tags = {
"Product" = "Name",
"Application" = "App",
"Owner" = "Email"
}
当我 运行 TF 计划 时,我收到一个错误:
Expected an attribute value, introduced by an equals sign ("=").
如何在 Terraform 中像这样组合变量?预先感谢您的帮助。
经过进一步测试后发现了这一点。给你:
tags = "${merge(var.tags,
map("Product", "Product Name",
"App", "${var.environment}")
)
}"
因此,重申一下:此代码将合并一个 map 标签变量,这些标签(在我的例子中)适用于具有标签(产品和应用程序)的许多资源每个基础设施资源都是唯一的。希望这对将来的人有帮助。地球改造愉快。
在我的 tfvars 文件中创建值对我不起作用...
这是我的方法....
我在 variables.tf 文件中创建了一个单独的变量,以便在标记过程中调用..
我的标签默认变量是来自父模块的 imported/pass。
因此它不需要指定任何默认数据。
子模块中的额外标记在 sub_tags 变量中完成..
imported/passed from parent/root module
variable "tags" {
type = "map"
}
tags in the child module
variable "sub_tags"{
type = "map"
default = {
Extra_Tags_key = "extra tagging value"
}
}
在需要额外标记的资源中..我这样称呼它
tags = "${merge(var.tags, var.sub_tags)}"
这对我很有用
我尝试使用地图,它确实适用于新版本。
下面几行对我有用:
tags = "${merge(var.resource_tags, {a="bb"})}"
目前,我正在处理一项要求,使 AWS 资源的 Terraform 标签更加模块化。在这种情况下,将有一个标签 'Function' 对每个资源都是唯一的,其余要附加的标签将应用于所有资源。我想要做的是将每个资源的唯一 'Function' 值与其他标签结合起来。
这是我目前得到的:
tags = {
Resource = "Example",
"${var.tags}
这个标签值在 variables.tf 文件中定义为一个地图,如下所示:
variable "tags" {
type = map
description = "Tags for infrastructure resources."
}
并在 tfvars 文件中填充:
tags = {
"Product" = "Name",
"Application" = "App",
"Owner" = "Email"
}
当我 运行 TF 计划 时,我收到一个错误:
Expected an attribute value, introduced by an equals sign ("=").
如何在 Terraform 中像这样组合变量?预先感谢您的帮助。
经过进一步测试后发现了这一点。给你:
tags = "${merge(var.tags,
map("Product", "Product Name",
"App", "${var.environment}")
)
}"
因此,重申一下:此代码将合并一个 map 标签变量,这些标签(在我的例子中)适用于具有标签(产品和应用程序)的许多资源每个基础设施资源都是唯一的。希望这对将来的人有帮助。地球改造愉快。
在我的 tfvars 文件中创建值对我不起作用... 这是我的方法....
我在 variables.tf 文件中创建了一个单独的变量,以便在标记过程中调用..
我的标签默认变量是来自父模块的 imported/pass。 因此它不需要指定任何默认数据。 子模块中的额外标记在 sub_tags 变量中完成..
imported/passed from parent/root module
variable "tags" {
type = "map"
}
tags in the child module
variable "sub_tags"{
type = "map"
default = {
Extra_Tags_key = "extra tagging value"
}
}
在需要额外标记的资源中..我这样称呼它
tags = "${merge(var.tags, var.sub_tags)}"
这对我很有用
我尝试使用地图,它确实适用于新版本。 下面几行对我有用:
tags = "${merge(var.resource_tags, {a="bb"})}"