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とネットワーキングモジュール。