更新时间:2024-04-17 GMT+08:00
count
默认情况下,Terraform的 resource块只配置一个资源。当需要创建多个相同的资源时,如果配置多个独立的 resource块就显得很冗余,且不利于维护。可以使用 count 或 for_each 参数在同一个 resource块中管理多个相同的资源。在同一个 resource块中不能同时使用count 和 for_each 参数。示例如下:
通过如上配置创建了3个相同的云硬盘(EVS)。在很多情况下,Provider 要求创建资源的某些参数具有唯一性,这时您可以使用 "count.index" 属性来进行区分,这是一个从0开始计数的索引值。
}
通过如上配置创建了两个VPC,名字分别为 myvpc_0 和 myvpc_1,它们具有相同的CIDR值。如果进一步修改CIDR值,可以声明一个string列表用于存储不同VPC的CIDR值,然后通过 count.index 去访问列表元素。
variable "name_list" { type = list(string) default = ["vpc_demo1", "vpc_demo2"] } variable "cidr_list" { type = list(string) default = ["192.168.0.0/16", "172.16.0.0/16"] } count = 2 name = var.name_list[count.index] cidr = var.cidr_list[count.index] }
使用 count 创建的资源需要通过索引值进行访问,格式为:<资源类型>.<名称>[索引值]
> huaweicloud_vpc.vpcs[0] # 访问第一个VPC的ID > huaweicloud_vpc.vpcs[0].id # 访问所有VPC的ID > huaweicloud_vpc.vpcs[*].id
父主题: Metadata