サブネット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モジュール。

試してみる — Terraform Variable Generator

フルツールを開く