Имеются конфигурации модулей / сети / testvpc и модулей / сети / подсети.
основная папка / модули / сеть / testvpc / main.tf
variable "vpccidr" {type="list"}
variable "vpcname" {type="list"}
resource "aws_vpc" "customVpc" {
count = "${length(var.vpccidr)}"
cidr_block = "${element(var.vpccidr,count.index)}"
tags {
Name = "${element(var.vpcname,count.index)}"
}
основная папка / модули / сеть/subnet/main.tf
variable "subcidr" {type="list"}
variable "subname" {type="list"}
resource "aws_subnet" "subnet" {
count = "${length(var.subcidr)}"
vpc_id = "${element(aws_vpc.customVpc.*.id, count.index)}"
cidr_block = "${element(var.subcidr, count.index)}"
tags {
Name = "${element(var.subname, count.index)}"
}
}
mainfolder / main.tf
module "testvpc" {
source = "./modules/network/testvpc"
vpccidr="${var.vpccidr}"
vpcname="${var.vpcname}"
}
module "subnet" {
source = "./modules/network/subnet"
subcidr = "${var.subcidr}"
subname = "${var.subname}"
}
mainfolder / var.tf
variable "vpccidr" {type="list"}
variable "vpcname" {type="list"}
variable "subcidr" {type="list"}
variable "subname" {type="list"}
mainfolder / terraform.tfvars
- vpccidr=["10.1.0.0/16","10.2.0.0/16","10.3.0.0/16"]
vpcname=["vpc-shared","vpc-sand","vpc-preprod"]
subcidr=["10.1.1.0/24","10.2.1.0/24","10.3.1.0/24"]
subname=["sub-shared","sub-sand","sub-preprod"]
-
Во время запуска terraform validate -var-file = terraform.tfvars выдает следующую ошибку
Error: resource 'aws_subnet.subnet' config: unknown
resource 'data.aws_vpc.customVpc' referenced in variable
data.aws_vpc.customVpc.*.id
Это потому, что aws_subnet не может найти vpc_id, так как ресурс aws_vpc не создан, поэтому он,Я называю testvpc и подсеть как модули в mainfolder / main.tf.Чего мне не хватает.
Во-вторых, это цикл в собственно aws_vpc и aws_subnet.Он должен создать vpc-shared 10.1.0.0/16 и sub-shared внутри этого vpc и т. Д.