Amazon-Web-Services
如何使用 Terraform 在 AWS 上使用一些使用的 cidr 範圍在目前 VPC 中創建新的子網塊大小?
我想使用 Terraform 為 EKS 創建一個新子網。在同一個賬戶中,已經創建了 VPC 並創建了一些子網。
locals { vpc_cidr_block = "10.148.52.0/22" public_subnets = [ "10.148.52.0/27", "10.148.54.0/27", ] # ... private_subnets_3 = [ "10.148.52.80/28", "10.148.54.80/28", ] subnets_4 = [ "10.148.52.240/28", "10.148.54.240/28", ] eks_private_subnets = [ "10.148.52.128/25", "10.148.54.128/25", ] } resource "aws_subnet" "eks_private" { count = length(local.eks_private_subnets) vpc_id = aws_vpc.this.id cidr_block = local.eks_private_subnets[count.index] availability_zone = local.azs[count.index] }
執行部署時,出現以下錯誤:
Error: error creating subnet: InvalidSubnet.Conflict: The CIDR '10.148.54.128/25' conflicts with another subnet status code: 400, request id: 11111111111-111111-1111111-1111111111111 on main.tf line 50, in resource "aws_subnet" "eks_private": 50: resource "aws_subnet" "eks_private" { Error: error creating subnet: InvalidSubnet.Conflict: The CIDR '10.148.52.128/25' conflicts with another subnet status code: 400, request id: 22222222222-222222-22222-222222222222222 on network.tf line 50, in resource "aws_subnet" "eks_private": 50: resource "aws_subnet" "eks_private" {
.128/25 大小似乎與其他子網衝突。但是我想在這個 VPC 中創建一個 /25 大小的子網,這不可能嗎?否則,我是否需要創建一個新的 VPC 才能使用?
要關閉這個問題,問題是您試圖將相同的 CIDR 範圍分配給兩個子網。您需要在可用範圍之外分配您的子網 CIDR 範圍。您可能會發現有用的兩個工具
- https://registry.terraform.io/modules/hashicorp/subnets/cidr/latest
- http://www.davidc.net/sites/default/subnets/subnets.html
如果您使用更常見的 CIDR 塊大小,您可能會發現這更容易,但這並不總是可行的。帶有 /24 子網的 /16 VPC 相當常見,並且易於使用。