Terraform random_shuffle 提供者的奇怪行为

Weird behavior of Terraform's random_shuffle provider

我有以下配置:

variable "private_subnets" {
  default = ["subnet-A", "subnet-B"]
}

resource "random_shuffle" "az" {
  input = ["${var.private_subnets}"]
  result_count = 1
}

module "server" {
  source = "./modules/aws-ec2"
  instance_count = 3
  name = "${var.env}-server"
  stack = "server"
  role = "server"
  ami = "${lookup(var.aws_amis, var.aws_region, "")}"
  instance_type = "t2.micro"
  subnet_id = "${random_shuffle.az.result[0]}"
  vpc_security_group_ids = ["${var.security_groups}"]
}

我原以为 Terraform 会为每个实例选择一个随机 subnet_id,但它总是选择列表中的第一项,即 subnet-A。 best/suggested 根据要创建的实例数从列表中随机选择项目的方法是什么?

提前致谢!

random_shuffle 像大多数 Terraform 资源一样接受 count 参数,所以如果您这样做:

resource "random_shuffle" "az" {
  input = ["${var.private_subnets}"]
  result_count = 1
  count = 3
}

它会给你 3 个数组,每个数组有 1 个子网。访问它将取决于您在模块中创建实例的精确程度,但大多数您使用的是 aws_instance resource,因此它将类似于:

resource "aws_instance" "foo" {
   count = 3
   subnet_id = ${element(random_shuffle.az, count.index)}
}