介绍

countfor_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开始的。

【Terraform】複数リソースを生成する方法(count, for_each)

如何使用 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)

就这样。我使用 Terraform 的 count 和 for_each 来生成多个资源。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308632444.html

相关文章:

  • 2021-12-07
  • 2021-10-28
  • 2021-12-17
  • 2021-12-16
  • 2021-11-07
  • 2021-12-08
  • 2021-08-05
猜你喜欢
  • 2021-12-31
  • 2021-12-09
  • 2021-10-19
  • 2021-04-07
  • 2021-10-26
  • 2021-12-26
  • 2021-06-01
  • 2018-07-25
相关资源
相似解决方案