Невозможно проанализировать выходные значения, которые были переданы из модулей, поэтому терраформировать план не удается - PullRequest
0 голосов
/ 05 октября 2018

Это фрагмент из файла Mainfolder / main.tf

module "testvpc" {
source = "./modules/network/testvpc"
vpccidr="${var.vpccidr}"
vpcname="${var.vpcname}"
vpc_id0="${module.testvpc.vpc_id0}"
vpc_id1="${module.testvpc.vpc_id1}"
vpc_id2="${module.testvpc.vpc_id2}"
rtableid0="${module.testvpc.rtableid0}"
 }

Вызов модуля подсети из ./modules/network для создания подсетей в каждом vpc

module "subnet" {
source = "./modules/network/subnet"
subcidr = "${var.subcidr}"
subname = "${var.subname}"
vpc_ids = "${module.testvpc.vpc_ids}"
subnet_id0 = "${module.subnet.subnet_id0}"
subnet_id1 = "${module.subnet.subnet_id1}"
subnet_id2 = "${module.subnet.subnet_id2}"
  }

Этомодули / testvpc / main.tf

variable "vpccidr" {type="list"}
variable "vpcname" {type="list"}
 variable "vpc_id0" {type="list"}
 variable "vpc_id1" {type="list"}
 variable "vpc_id2" {type="list"}
 variable "rtableid0" {type="list"}

 resource "aws_vpc" "customVpc" {
 count = "${length(var.vpccidr)}"
 cidr_block = "${element(var.vpccidr,count.index)}"
 enable_dns_support = true
 enable_dns_hostnames = true

 tags {
  #count = "${length(var.vpcname)}"
  Name = "${element(var.vpcname,count.index)}"
  }
  }

  output "vpc_ids" { value=["${aws_vpc.customVpc.*.id}"]}
  output "vpc_id0" { value=["${element(aws_vpc.customVpc.*.id,0)}"] }
  output "vpc_id1" { value=["${element(aws_vpc.customVpc.*.id,1)}"] }
  output "vpc_id2" { value=["${element(aws_vpc.customVpc.*.id,2)}"] }
   output "rtableid0" { value 
  ["${element(aws_vpc.customVpc.*.main_route_table_id,0)}"]}

Я называю выходы vpc и подсетей в различных других модулях, таких как маршруты, privateroutes, internet gw, nat gw.

terraform validate --var-file=file.tfvars and terraform plan --var-file=file.tfvars

Работает, но при попытке сделать:

terraform apply --var-file=file.tfvars i get a error saying

module.nat.var.subnet_id0: переменная subnet_id0 в модуле nat должна иметь тип string, полученный список

  • module.rtassociation.var.rtableid0: переменная rtableid0 в модуле rtassociation должна быть строкой типа, полученный список
    • module.rtassociation.var.subnet_id1: переменная subnet_id1 в модуле rtassociation должна быть строкой типа, полученный список
      • module.igw0.var.vpc_id0: переменная vpc_id0 в модуле igw0 должна быть строкой типа, полученный список
      • module.rtassociation.var.subnet_id2: переменная subnet_id2 в rtassociation модуля должна быть строкой типа, полученный список
      • module.privateroute.var.vpc_id1: переменная vpc_id1 в модуле privateroute должна иметь тип string, полученный список

, вследствие чегоинтернет-шлюз nat gw не создается.

Как ссылаться на идентификаторы подсетей отдельных подсетей в других модулях?

ПРИМЕЧАНИЕ Я создаю VPC и подсети в цикле, используя счетчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...