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

jdo*_*doe 1 module amazon-web-services terraform

我正在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}"]?
}
Run Code Online (Sandbox Code Playgroud)

min*_*oyo 5

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

output "instance_ids" {
  value = ["${aws_instance.web.*.id}"]
}
Run Code Online (Sandbox Code Playgroud)

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

接下来,在elb模块中声明list变量:

variable "instances" {
  type = "list"
}
Run Code Online (Sandbox Code Playgroud)

最后,将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}"]
}
Run Code Online (Sandbox Code Playgroud)