amazon-web-services - 在 Terraform 中有条件地添加 MQ 代理用户
问题描述
我正在使用 Terraform 创建 AWS MQ 代理,并且仅在设置了用户名变量时才想创建额外的用户。我想做以下我知道不起作用的事情,但我正在寻找一种方法来做类似的事情。欢迎任何建议。
resource "aws_mq_broker" "my_broker" {
broker_name = "${var.broker_name}"
user {
username = "${var.broker_user}"
password = "${var.broker_password}"
}
if "${var.broker_user_two}"
user {
username = "${var.broker_user_two}"
password = "${var.broker_password_two}"
}
}
解决方案
Terraform 0.12 将升级核心 HCL 语法以支持 HCL2 以及动态块。
正如 0.12 预览指南中给出的那样,它看起来像这样:
# Configuration for Terraform 0.12
locals {
standard_tags = {
Component = "user-service"
Environment = "production"
}
}
resource "aws_autoscaling_group" "example" {
# ...
tag {
key = "Name"
value = "example-asg-name"
propagate_at_launch = false
}
dynamic "tag" {
for_each = local.standard_tags
content {
key = tag.key
value = tag.value
propagate_at_launch = true
}
}
}
因此,您应该能够使用以下内容遍历您的 MQ 代理的用户列表:
variable "users" {
default = [
{
username = "user1"
password = "password1"
},
]
}
resource "aws_mq_broker" "my_broker" {
broker_name = var.broker_name
dynamic "user" {
for_each var.users
content {
username = user.username
password = user.password
}
}
}
推荐阅读
- indy - 上传到跳过 Web 服务器
- c# - LimitedConcurrencyLevelTaskScheduler 和 aync/await 的锁定问题
- azure - 如何阻止出站 HTTP 连接超时
- cakephp - CakePhp3.7 插件自动加载选项不可用
- windows - 如何有条件地播放 Beep?
- javascript - 处理有效的模态解雇和真正的异常
- javascript - 尝试访问 SVG 元素时,getElementById 返回 null
- android - 名为“debug-x86”的变体,但仅找到名为“”的变体
- c# - 由于处理器体系结构不匹配,MSBuildWorkspace.OpenSolutionAsync(solutionPath) 无法编译
- hibernate - jpql "join fetch" vs EntityGraph