terraform aws 将实例列表从一个模块传递到另一个模块

terraform aws pass instance list from 1 module to another

我在 1 个模块中创建 2 个实例,现在我需要将这 2 个实例附加到使用另一个模块(同一文件)创建的 ELB - 如果不手动指定它们是否可行?

  module "instances" {
  source = "../../../../modules/ec2"

  ami                         = "ami...."
  number_of_instances         = 2
  instance_type               = "t2.micro"
}

  module "elb" {
  source = "../../../../modules//elb"

  name = "some elb"
  instances = ["???"] #something like ["${module.ec2.instances.id}"]?
}

首先,在您的 ec2 模块中定义输出:

output "instance_ids" {
  value = ["${aws_instance.web.*.id}"]
}

注意:资源名称web是一个例子。请指定模块中的实际资源名称。

接下来,在您的 elb 模块中声明列表变量:

variable "instances" {
  type = "list"
}

最后将ec2模块的输出传给elb模块:

module "instances" {
  source = "../../../../modules/ec2"

  ami                         = "ami...."
  number_of_instances         = 2
  instance_type               = "t2.micro"
}

module "elb" {
  source = "../../../../modules/elb"

  name = "some elb"
  instances = ["${module.instances.instance_ids}"]
}