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

问题描述:

我在1个模块中创建了2个实例,现在我需要将这2个实例附加到使用另一个模块(相同文件)创建的ELB--这可能不需要手动指定他们?terraform aws从1个模块传递实例列表到另一个

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}"] 
} 
+1

感谢,不知道你能以这种方式使用输出 – jdoe