サブネットCIDRをリスト変数として定義する
少なくとも1つのサブネットが定義されていることを確認するバリデーション付きのサブネットCIDRブロック用Terraform list(string)変数を作成します。
Networking
詳細な説明
サブネットCIDRリスト変数
サブネット定義はTerraformネットワーキングモジュールで最も一般的なリスト変数の1つです。リスト内の各CIDRブロックは通常、異なるアベイラビリティゾーンのサブネットにマッピングされます。
変数定義
variable "subnet_cidrs" {
type = list(string)
description = "List of CIDR blocks for subnets"
default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
validation {
condition = length(var.subnet_cidrs) > 0
error_message = "At least one subnet CIDR block must be provided."
}
}
パブリックとプライベートサブネットの分離
一般的なパターンでは2つのリスト変数を使用します:
variable "public_subnet_cidrs" {
type = list(string)
description = "CIDR blocks for public subnets (with internet gateway)"
default = ["10.0.1.0/24", "10.0.2.0/24"]
}
variable "private_subnet_cidrs" {
type = list(string)
description = "CIDR blocks for private subnets (NAT gateway only)"
default = ["10.0.10.0/24", "10.0.11.0/24"]
}
CIDR計画のヒント
| VPC CIDR | サブネットマスク | サブネット数 | サブネットあたりのホスト |
|---|---|---|---|
| /16 | /20 | 16 | 4,094 |
| /16 | /24 | 256 | 254 |
| /20 | /24 | 16 | 254 |
| /24 | /28 | 16 | 14 |
成長の余地を残してサブネットCIDRを計画してください。AWSはサブネットごとに5つのIPアドレスを予約するため、/24は251個の使用可能なホストを提供します。
ユースケース
環境間でサブネットの数とサイズが異なる(開発では少なく、本番では多い)アベイラビリティゾーン間にサブネットを作成するVPCモジュール。