无法解析从模块传递的输出值,因此terraform计划失败

时间:2018-10-04 22:41:51

标签: terraform

这是从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)}"]}

我在其他各种模块(例如route,privateroutes,internet gw,nat gw)中调用vpc和子网的输出。

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:模块nat中的变量subnet_id0应该是       输入字符串,得到列表

     
      
  • module.rtassociation.var.rtableid0:模块中的变量rtableid0    rtassociation应该是字符串类型,得到列表      
        
    • module.rtassociation.var.subnet_id1:模块中的变量subnet_id1   rtassociation应该是字符串类型,得到列表      
          
      • module.igw0.var.vpc_id0:模块igw0中的变量vpc_id0应为   输入字符串,得到列表
      •   
      • module.rtassociation.var.subnet_id2:模块中的变量subnet_id2   rtassociation应该是字符串类型,得到列表
      •   
      • module.privateroute.var.vpc_id1:模块中的变量vpc_id1   privateroute应该是字符串类型,得到列表
      •   
    •   
  •   

由于未创建Internet网关nat gw。

我如何在其他模块中引用各个子网的子网ID?

注意:我正在使用计数器在循环中创建VPC和子网。

0 个答案:

没有答案