介绍
有count和for_each作为Terraform生成多个资源的方法,所以我将简要总结如何使用它们。
如何使用计数
使用计数,您可以按指定次数生成资源。
创建两个 IAM 用户作为试用。
# ---------------------------------------------
# Terraform configuration
# ---------------------------------------------
terraform {
required_version = ">=0.13"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
provider "aws" {
profile = "terraform" # ご自身のaws profile
region = "ap-northeast-1"
}
# ---------------------------------------------
# IAM User
# ---------------------------------------------
resource "aws_iam_user" "user" {
count = 2
name = "testuser-${count.index}"
}
我会做。
$ terraform apply
如果您检查 AWS 控制台,您可以看到已创建了两个由 count 指定的 IAM 用户。
可以看到${count.index}是从0开始的。
如何使用 for_each
使用for_each,可以在扩展指定地图的同时生成多个资源。
创建 3 个子网作为测试。
for_each 指定键值格式的值。
for_each = {
"192.168.1.0/24" = "ap-northeast-1a"
"192.168.2.0/24" = "ap-northeast-1c"
"192.168.3.0/24" = "ap-northeast-1d"
}
您可以使用 each.key 和 each.value 获取值。
cidr_block = each.key
availability_zone = each.value
实际代码如下。
terraform {
required_version = ">=1.3"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
provider "aws" {
profile = "terraform"
region = "ap-northeast-1"
}
# ---------------------------------------------
# Network
# ---------------------------------------------
resource "aws_vpc" "vpc" {
cidr_block = "192.168.0.0/20"
}
resource "aws_subnet" "subnet" {
# キーバリュー形式で値を指定
for_each = {
"192.168.1.0/24" = "ap-northeast-1a"
"192.168.2.0/24" = "ap-northeast-1c"
"192.168.3.0/24" = "ap-northeast-1d"
}
# each.keyとeach.valueで値を取得
vpc_id = aws_vpc.vpc.id
cidr_block = each.key
availability_zone = each.value
}
我会做。
$ terraform apply
如果没有问题,您可以通过检查 AWS 控制台看到已使用 for_each 创建了 3 个子网。
就这样。我使用 Terraform 的 count 和 for_each 来生成多个资源。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308632444.html