Как передать значения переменных, упомянутых в variable.tf
типа «список» или «карта».Есть ли ошибки в синтаксисе в файле input.tfvars
, упомянутом ниже?
Цель состоит не в том, чтобы жестко кодировать какие-либо значения в файле variables.tf
или main.tf
.В Terraform.io
документах я проверил, что значения могут быть предоставлены в этом формате.
Это с сайта:
Списки определены явно или неявно:
# implicitly by using brackets [...]
variable "cidrs" { default = [] }
# explicitly
variable "cidrs" { type = "list" }
Вы можете указать списки в файле terraform.tfvars
:
cidrs = [ "10.0.0.0/16", "10.1.0.0/16" ]
Теперь, когда я пытаюсь сделать
terraform plan -var-file=input.tfvars
, он не может прочитать значения переменных из файла tfvars и выдает следующую ошибку:
Ошибка: корень модуля:
модуль vpc: обязательная переменная "vpccidr" не установлена
модуль vpc: обязательная переменная "vpcname" не установлена
Файл variables.tf
выглядит следующим образом:
variable "vpccidr" { type = "list"}
variable "vpcname" { type = "list" }
Файл input.tfvars
выглядит следующим образом:
vpccidr=[ "10.1.0.0/16", "10.2.0.0/16", "10.3.0.0/16" ]
vpcname=[ "vpc1", "vpc2", "vpc3" ]
Файл main.tf
выглядит следующим образом:
module "vpc"{
source = "modules/network/vpc"
}
Модуль VPC в modules/network
имеет следующий файл конфигурации main.tf
и файл переменной, упомянутый выше в variables.tf
:
resource "aws_vpc" "customVpc" {
count = "${length(var.vpccidr)}"
cidr_block = "${element(var.vpccidr, count.index)}"
tags {
count = "${length(var.vpcname)}"
Name = "${element(var.vpcname, count.index)}"
}
}