首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Terraform中创建动态标记

如何在Terraform中创建动态标记
EN

Stack Overflow用户
提问于 2022-05-20 14:17:24
回答 1查看 365关注 0票数 0

下面的局部变量文件中有资源组的名称和每个环境的标记映射

代码语言:javascript
复制
    locals{
           identity-rgs = ["prod-dc", "prod-okta", "dev-dc", "dev-okta"]

           prod_okta_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Prod"
                  "Product" = "Okta"
                            }
          dev_okta_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "Okta"
                            }
           dev_dc_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "DC"
                            }
              prod_dc_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "DC"
                            }

Main.tf -从本地文件创建Azure资源组

代码语言:javascript
复制
 resource "azurerm_resource_group" "identity-rgs" {
      count    = length(local.ind-identity-rgs)
      name     = local.ind-identity-rgs[count.index]
      location = ....
      tags = 

在遍历列表时,如何动态地为每个资源组分配标记?

例如,标识-rgs应该有prod_dc_tags和标识-rgs 2应该有dev_dc标记?

我正在尝试一个如果其他的条件,但无法使它工作

代码语言:javascript
复制
tags = "${local.identity-rgs == "prod-dc" ? local.prod_dc_tags:0}"

资源"azurerm_resource_group“中的”标识-rgs“:│297:││= "${local.identity-rgs ==”prod?local.prod_dc_tags:0}“rgs是一个元组,包含4个元素,local.prod_dc_tags是具有10个属性的对象,││的真假结果表达式必须具有一致的类型。给定的表达式分别是对象和数字。

这也可以通过动态块来完成吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-21 04:42:11

你不能用你正在尝试的方式去做。最简单的方法是重新定义你的本地人:

代码语言:javascript
复制
    locals{
      identity-rgs = ["prod-dc", "prod-okta", "dev-dc", "dev-okta"]

     tags = { 
          prod_okta = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Prod"
                  "Product" = "Okta"
                            },
          dev_okta_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "Okta"
                            },
           dev_dc_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "DC"
                            },
              prod_dc_tags = {
                  "Key1" = "Value1" 
                  "Key2" = "Value2" 
                  "Environment" = "Dev"
                  "Product" = "DC"
                            }
          }

然后,使用for_each (它比count更好,因为它不依赖于项目的顺序):

代码语言:javascript
复制
 resource "azurerm_resource_group" "identity-rgs" {
      for_each = toset(local.ind-identity-rgs)

      tags = local.tags[each.key]
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72320447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档