amazon-web-services - 循环地图并将值分配给本地 - Terraform
问题描述
我正在尝试将值 s3 名称和 create_user 传递到 main.tf 中的本地块中,以便它们都具有列表中的值,然后我在模块 s3 的本地块中传递 list_of_bucket 以创建存储桶并在模块中循环 user_to_create s3_user 如果布尔值设置为 true,则创建用户。所有这些值都传递给 variable.tf,然后传递给 main.tf
开发者.tfvars
wea-nonprod = {
services = {
s3 = [
sthree = {
create_user = true,
}
sfour = {
create_user = true,
}
sfive = {
create_user = true,
}
]
}
}
变量.tf
variable "s3_buckets" {
type = list(map)
}
主文件
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]
}
解决方案
只需遍历您的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]
}
推荐阅读
- vue.js - vuex-persist 不更新 vuex 状态
- python - 在 Django 2.2 上设置一个无相同站点的 cookie
- firebase - 我在 kotlin java.lang.IllegalArgumentException 中发现错误:数据无效。不支持的类型:com.scrollupstudio.projemanag.models.Task
- meteor - 如何防止 Meteor 的帐户库自动发布当前用户的电子邮件?
- python - Gunicorn 没有在 AWS EB 实例上启动?
- reactjs - 如何使用 React 在 mapmyindia 上绘制折线?
- ios - UIButton 中图像的缩放类型或内容模式不起作用
- api - API 文档组件
- java - 如何读取 CSV 文件的内容并将其放入 Java 中的二维数组?
- javascript - 在 OJET 中验证 oj-select-single