CIDRバリデーション付きVPC CIDRブロック変数を定義する

cidrhost()バリデーションで構文的に正しいCIDR範囲を確認するTerraformのVPC CIDRブロック変数を作成します。

AWS Basics

詳細な説明

VPC CIDRブロック変数

ネットワークCIDRブロックはVPC設計の基本です。バリデーション付きの適切に定義された変数は、ルーティングの問題やIPの競合を引き起こす可能性のある不正なネットワーク範囲を防ぎます。

変数定義

variable "vpc_cidr" {
  type        = string
  description = "CIDR block for the VPC"
  default     = "10.0.0.0/16"

  validation {
    condition     = can(cidrhost(var.vpc_cidr, 0))
    error_message = "Must be a valid CIDR block (e.g., 10.0.0.0/16)."
  }
}

can(cidrhost())の仕組み

cidrhost()関数はCIDR範囲から特定のホストIPを計算します。入力が有効なCIDRでない場合、関数はエラーを発生させます。can()で囲むことで、そのエラーをブーリアンに変換します:

  • can(cidrhost("10.0.0.0/16", 0))trueを返す
  • can(cidrhost("not-a-cidr", 0))falseを返す

これは複雑な正規表現を使わないCIDRバリデーションのTerraformイディオムです。

一般的なVPC CIDR範囲

範囲 サイズ ホスト数 ユースケース
10.0.0.0/16 /16 65,534 大規模本番VPC
10.0.0.0/20 /20 4,094 中規模環境
172.16.0.0/16 /16 65,534 別のネットワーク空間
192.168.0.0/24 /24 254 小規模dev/test VPC

サブネット変数との組み合わせ

この変数はサブネットCIDRリスト変数と一緒に使われることが多いです。サブネットCIDRがVPC CIDRのサブセットであることを確認してください。

ユースケース

ネットワークの重複、ルーティング障害、ピアリングの競合を防ぐために有効なCIDRブロックを強制する必要があるVPCとネットワーキングモジュール。

試してみる — Terraform Variable Generator

フルツールを開く