首页 > 解决方案 > 在适用于 AWS 的 Terraform 标签中组合变量值和显式定义的变量值

问题描述

目前,我正在研究使 AWS 资源的 Terraform 标签更加模块化。在这种情况下,将有一个标签“功能”对每个资源都是唯一的,其余要附加的标签将应用于所有资源。我要做的是将每个资源的唯一“功能”值与其他标签结合起来。

这是我到目前为止所得到的:

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 Plan时,出现错误:

Expected an attribute value, introduced by an equals sign ("=").

如何在 Terraform 中像这样组合变量?在此先感谢您的帮助。

标签: terraformterraform-provider-aws

解决方案


在进一步测试后想通了这一点。干得好:

tags = "${merge(var.tags, 
                map("Product", "Product Name", 
                    "App", "${var.environment}")
               )
         }"

因此,重申一下:此代码将合并标签的映射变量(在我的情况下)适用于许多资源与每个基础设施资源唯一的标签(产品和应用程序)。希望这对将来的某人有所帮助。快乐的地球化改造。


推荐阅读