首页 > 解决方案 > Terraform 在 for_each 上获取列表索引

问题描述

Terraform新手在这里。我想使用 迭代一个列表for_each,但似乎键和值是相同的:

provider "aws" {
  profile = "default"
  region  = "us-east-1"
}

variable "vpc_cidrs" {
  default = ["10.0.0.0/16", "10.1.0.0/16"]
}

resource "aws_vpc" "vpc" {
  for_each             = toset(var.vpc_cidrs)
  cidr_block           = each.value
  enable_dns_hostnames = true
  tags                 = { Name = "Company0${each.key}" }
}

我希望标签 Name 是"Name" = "Company01""Name" = "Company02"但根据terraform apply,我得到: "Name" = "Company010.0.0.0/16""Name" = "Company010.1.0.0/16" 我错过了什么?

标签: terraform

解决方案


使用index函数找到了一个简单的解决方案:

tags = { Name = "Company0${index(var.vpc_cidrs, each.value) + 1}" }

推荐阅读