【发布时间】:2018-07-29 10:27:42
【问题描述】:
我在 Terraform 中遇到问题。我正在尝试使用我的变量文件中的预定义 CIDR 范围来配置 VPC 和子网。下面是变量文件中的代码 sn-p,即 variables.tf
variable "vpc-fullcidr" {
description = "VPC CIDR range"
type = "list"
default = ["10.0.0.0/16", "192.168.0.0/16"]
}
variable "subnet-cidr" {
description = "Subnet CIDR range"
type = "list"
default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24", "192.168.0.0/24",
"192.168.1.0/24", "192.168.2.0/24"]
}
variable "vpc-count" {
description = "Number of VPC to create"
type = "string"
default = "2"
}
variable "subnet-count"
{
description = "Number of Subnets to create"
default = "6"
}
以下是我的 VPC 模板。 VPC 的配置没有任何问题:-
resource "aws_vpc" "VPCPrimary" {
count = "${var.vpc-count}"
cidr_block = "${element(var.vpc-fullcidr, count.index)}"
#### Below DNS values are for the internal vpc dns resolution
enable_dns_support = true
enable_dns_hostnames = true
tags {
Name = "${element(var.VPCNameTag, count.index)}"
}
}
当我尝试创建子网时,它失败了。下面是我的子网模板:-
resource "aws_subnet" "PrivateSubnets" {
count = "${var.subnet-count}"
vpc_id = "${element(aws_vpc.VPCPrimary.*.id, count.index)}"
availability_zone = "${var.primaryaz}"
cidr_block = "${element(var.subnet-cidr, count.index)}"
tags {
Name = "Private Subnet ${count.index + 1}"
}
}
地形错误日志:-
Error: Error applying plan:
2 error(s) occurred:
* aws_subnet.PrivateSubnets[4]: 1 error(s) occurred:
* aws_subnet.PrivateSubnets.4: Error creating subnet: InvalidSubnet.Range:
The CIDR '192.168.1.0/24' is invalid.
status code: 400, request id: 1a9136e6-8631-43cb-99a6-ccd2522854d4
* aws_subnet.PrivateSubnets[1]: 1 error(s) occurred:
* aws_subnet.PrivateSubnets.1: Error creating subnet: InvalidSubnet.Range:
The CIDR '10.0.2.0/24' is invalid.
status code: 400, request id: 1b0e4cf5-2e1d-402e-a89d-f08d8ac694e1
我正在尝试以自动方式配置基础架构,其中 variables.tf 文件使用存储过程在 .NET 前端中的用户输入动态填充。这个问题是当我尝试创建多个 VPC 以及多个子网时。有什么方法可以将子网 CIDR 块与 terraform 资源“aws_subnet”中的 VPC CIDR 块映射。
【问题讨论】:
-
其他的都创建好了吗?
-
哦,等一下,您是否有任何逻辑将 192.168.x.x 子网与 10.x.x.x 子网分开,以便它们只尝试在正确的 VPC 中创建?或者您只是在两个 VPC 上的所有子网中循环(这似乎是 TF sn-ps 发布的情况),尽管我预计在这种情况下会报告 6 个错误......
-
我搜索了很多关于如何实现将两者分开的逻辑但找不到逻辑。六个子网中有四个成功创建,因此其余两个子网出错。我正在寻找一种解决方案,其中我将创建 n 个 VPC 和 x 个子网,并且用户将动态提供这些详细信息。
标签: terraform