amazon-web-services - Terraform:如何从一个资源 block 创建多个 aws 子网?

标签 amazon-web-services terraform

我试图从一个资源 block 创建多个子网,但出现以下错误

Error: aws_subnet.private: cidr_block must be a single value, not a list

ma​​in.tf

resource "aws_subnet" "private" {
  vpc_id                  = "${aws_vpc.vpcname.id}"
  cidr_block              = "${var.private_subnet}"
  availability_zone       = "${data.aws_availability_zones.available.names[count.index]}"
  map_public_ip_on_launch = false

  tags {
    Name        = "${var.private}"
    Environment = "${terraform.workspace}"
  }
}

变量.tf

variable "private_subnet" {
  type    = "list"
  default = []
}

dev.tfvars

private_subnet = ["10.0.2.0/24", "10.0.3.0/24"]

最佳答案

您必须创建多个 aws_subnet 资源,方法是利用 count 参数为您的 var.private_subnet 列表中的每个条目创建一个资源:

resource "aws_subnet" "private" {
  count                   = "${length(var.private_subnet)}"
  vpc_id                  = "${aws_vpc.vpcname.id}"
  cidr_block              = "${var.private_subnet[count.index]}"
  availability_zone       = "${data.aws_availability_zones.available.names[count.index]}"
  map_public_ip_on_launch = false
}

这将单个 aws_subnet 资源扩展为两个,当每个资源 block 由 terraform 评估时,每个资源基于 count 的枚举具有略微不同的值。

关于amazon-web-services - Terraform:如何从一个资源 block 创建多个 aws 子网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196693/

相关文章:

amazon-web-services - 如何在不同的 AWS 账户中使用相同的域名?

amazon-web-services - 某些 EC2 实例的 AWS IAM 策略授予权限

amazon-web-services - 如何在 CloudFormation YAML 模板中设置 CloudWatch 日志的保留?

python-3.x - 通过MS团队触发AWS Lambda函数

kubernetes - 有没有办法手动编辑/篡改 terraform.tfstate 文件?

amazon-web-services - 如何将事件从 EventBridge 发送到 Lambda

docker - `terraform init` 安装provider kreuzwerker/docker失败

amazon-web-services - 何时在 Packer 与 Terraform 中进行配置?

terraform - 使用 for_each 表达式时在 terraform 中出现不受支持的属性错误

amazon-web-services - AWS Golang S3管理器上传: Access denied