Terraform
Terraform
本文导读
展开导读
链接复制成功!
count
默认情况下,Terraform的 resource块只配置一个资源。当我们需要创建多个相同的资源时,如果配置多个独立的 resource块就显得很冗余,且不利于维护。我们可以使用 count 或 for_each 参数在同一个 resource块中管理多个相同的资源。在同一个 resource块中不能同时使用count 和 for_each 参数。示例如下:
resource "huaweicloud_evs_volume" "volumes" {
count = 3
size = 20
volume_type = "SSD"
availability_zone = "cn-north-4a"
}
我们通过如上配置创建了3个相同的云硬盘(EVS)。在很多情况下,Provider 要求创建资源的某些参数具有唯一性,这时我们可以使用 "count.index" 属性来进行区分,这是一个从0开始计数的索引值。
resource "huaweicloud_vpc" "vpcs" {
count = 2
name = "myvpc_${count.index}"
cidr = "192.168.0.0/16"
}
我们通过如上配置创建了两个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"]
}
resource "huaweicloud_vpc" "vpcs" {
count = 2
name = var.name_list[count.index]
cidr = var.cidr_list[count.index]
}
使用 count 创建的资源需要通过索引值进行访问,格式为:<资源类型>.<名称>[索引值]
# 访问第一个VPC
> huaweicloud_vpc.vpcs[0]
# 访问第一个VPC的ID
> huaweicloud_vpc.vpcs[0].id
# 访问所有VPC的ID
> huaweicloud_vpc.vpcs[*].id
父主题: Metadata