首页 > 解决方案 > 在 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}"
  }
}

标签: amazon-web-servicesterraform

解决方案


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
    }
  }
}

推荐阅读