【问题标题】:Loop over maps and assign value to local - Terraform循环地图并将值分配给本地 - Terraform
【发布时间】:2021-10-03 10:44:57
【问题描述】:

我正在尝试将值 s3 名称和 create_user 传递到 main.tf 中的本地块中,以便它们都具有列表中的值,然后我在模块 s3 的本地块中传递 list_of_bucket 以创建存储桶并循环如果布尔值设置为 true,则模块 s3_user 中的 user_to_create 创建用户。所有这些值都传递给 variable.tf,然后传递给 main.tf

dev.tfvars

wea-nonprod = {
     
    services = {
     
      s3 = [
        sthree = {
          create_user = true,
        }
        sfour = {
          create_user = true,
        }
        sfive = {
          create_user = true,
        }
      ]
  }
}

变量.tf

variable "s3_buckets" {
  type = list(map)
}

main.tf

locals { 
  users_to_create = ""
  list_of_buckets = ""
}

module "s3" {
  source = "../../s3"
  name = join("-", [var.name_prefix, "s3"])    
  tags = merge(var.tags, {Name = join("-", [var.name_prefix, "s3"])})
  buckets = list_of_buckets
  sse_algorithm = "AES256"
  access_log_bucket_name = var.access_log_bucket_name
}

module "s3_user" {
  for_each = local.users_to_create 
  source = "./service-s3-bucket-user"
  name = join("-", [var.name_prefix, each.key])
  tags = var.tags
  bucket_arn = module.s3.bucket_arns[each.key]
  depends_on = [module.s3]
}

【问题讨论】:

  • 请不要重复提问。已经发布了答案。如果它不起作用,请对其发表评论并解释问题所在,以便回答的人可能会修改它。

标签: amazon-web-services amazon-s3 terraform terraform-provider-aws


【解决方案1】:

只需遍历您的 wea-nonprod 地图:

locals { 
  users_to_create = [ for name in var.wea-nonprod.services.s3 if name.create_user == true ]
  list_of_buckets = [ for bucket in var.wea-nonprod.services.s3 ]
}

还有对模块块的一些更改:


module "s3" {
  source                 = "../../s3"
  name                   = "${var.name_prefix}-s3"
  tags                   = merge(var.tags, { Name = "${var.name_prefix}-s3" })
  buckets                = local.list_of_buckets
  sse_algorithm          = "AES256"
  access_log_bucket_name = var.access_log_bucket_name
}

module "s3_user" {
  count      = length(local.users_to_create)
  source     = "./service-s3-bucket-user"
  name       = "${var.name_prefix}${local.users_to_create[count.index]}"
  tags       = var.tags
  bucket_arn = module.s3.bucket_arns[local.users_to_create[count.index]]
  depends_on = [module.s3]
}

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2017-04-10
    • 2020-10-22
    • 2014-08-21
    • 1970-01-01
    • 2013-01-12
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多