- OpenTofu言語
- 関数
- cidrsubnets
cidrsubnets
関数
cidrsubnets
は、特定のCIDRプレフィックス内の連続したIPアドレス範囲のシーケンスを計算します。
cidrsubnets(prefix, newbits...)
prefix
は、RFC 4632セクション3.1で定義されているように、CIDR表記で指定する必要があります。
上記でnewbits
として示されている残りの引数は、それぞれ返されるアドレス範囲ごとに追加されるネットワークプレフィックスビット数を指定します。したがって、戻り値は、各newbits
引数ごとに1つの要素を持つリストになり、各要素はCIDR表記のアドレス範囲を含む文字列となります。
IPアドレスに関する概念の詳細については、関連関数cidrsubnet
のドキュメントを参照してください。cidrsubnet
はプレフィックス内の単一のサブネットアドレスを計算し、サブネット番号を指定できますが、cidrsubnets
は一度に多くのサブネットを、異なるサイズで計算し、サブネット番号を自動的に割り当てます。
ネットワークアドレス計画の一部としてアドレス空間を分割するためにこの関数を使用する場合、ネットワークアドレスが実際のインフラストラクチャに割り当てられた後は、既存の引数を変更しないでください。それ以外の場合は、後のアドレス割り当てが無効になります。ただし、十分なアドレス空間があれば、既存の呼び出しに新しい引数を安全に追加することはできます。
この関数はIPv6とIPv4の両方のプレフィックスを受け入れ、結果は常に指定されたプレフィックスと同じアドレススキームを使用します。
歴史的な理由から、この関数は先頭にゼロが付いたIPv4アドレスオクテットを10進数として解釈します。これは、それらを8進数として解釈する他のシステムとは異なります。後方互換性のためにこの動作を維持していますが、この動作に依存しないことをお勧めします。
hashicorp/subnets/cidr
モジュールはcidrsubnets
をラップして、ネットワークにシンボリック名を割り当て、廃止された割り当てのためのプレフィックスをスキップするための追加機能を提供します。そのドキュメントには、いくつかの一般的なクラウド仮想ネットワークプラットフォームの使用例が含まれています。
例
> cidrsubnets("10.1.0.0/16", 4, 4, 8, 4)
[
"10.1.0.0/20",
"10.1.16.0/20",
"10.1.32.0/24",
"10.1.48.0/20",
]
> cidrsubnets("fd00:fd12:3456:7890::/56", 16, 16, 16, 32)
[
"fd00:fd12:3456:7800::/72",
"fd00:fd12:3456:7800:100::/72",
"fd00:fd12:3456:7800:200::/72",
"fd00:fd12:3456:7800:300::/88",
]
for
式を使用してネストされたcidrsubnets
呼び出しを行うことで、ネットワークアドレスブロックのグループを簡潔に割り当てることができます。
> [for cidr_block in cidrsubnets("10.0.0.0/8", 8, 8, 8, 8) : cidrsubnets(cidr_block, 4, 4)]
[
[
"10.0.0.0/20",
"10.0.16.0/20",
],
[
"10.1.0.0/20",
"10.1.16.0/20",
],
[
"10.2.0.0/20",
"10.2.16.0/20",
],
[
"10.3.0.0/20",
"10.3.16.0/20",
],
]
関連関数
cidrhost
は、指定されたネットワークアドレスプレフィックス内の単一ホストのIPアドレスを計算します。cidrnetmask
は、CIDR表記のIPv4ネットワークプレフィックスをネットマスク表記に変換します。cidrsubnet
は、単一のサブネットアドレスを計算し、ネットワーク番号を指定できます。