模块中的地形使用计数索引

时间:2019-05-21 15:35:05

标签: terraform terraform-provider-aws

我想为我的AWS EC2实例使用terraform模块中的count.index来按递增顺序命名该实例

file: ec2/main.tf
 resource "aws_instance" "instance"{
    ami = "ami-xxx"
    tags {
     Name = "var.instance"
     }
    count = "var.count"

}

file: ec2instance.tf

module "ec2"{
 source = "./ec2"
 count = 3
 instance_name = "firsttypeinstance-${count.index+1}"
}

module "ec20"{
 source = "./ec2"
 count = 2
 instance_name = "secondtype-${count.index+1}"

}

我希望实例名称填充为

firsttypeinstance-1 firsttypeinstance-2 firsttypeinstance-3

secondtype-1 secondtype-2

但是我得到了我无法在模块中使用计数索引的错误

2 个答案:

答案 0 :(得分:0)

From terraform doc

  

除上述内容外,Terraform当前未使用参数名称countfor_eachlifecycle,但保留给计划中的将来功能使用。

但是,您可以在模块中创建my_count变量,并将其用于模块内部的资源

模块ec2

resource "aws_instance" "instance"{
    ami = "ami-xxx"
    tags {
        Name = "var.instance-${count.index}"
    }
    count = "var.my_count"
}

模块主要

module "ec2"{
   source = "./ec2"
   my_count = 3
   instance_name = "firsttypeinstance" ## actually instance prefix
}

答案 1 :(得分:0)

如果您使用的是Terraform 0.12,则可以使用for循环功能:https://www.terraform.io/docs/configuration/expressions.html#for-expressions

如果您的年龄小于0.12(就像我一样),请不要走运。

我认为,向实例添加ID往往会使您的基础结构不那么“不变”。