devops-network-calculator-for-azure について
Azureネットワークをオフラインで計画するPythonツールです。CIDR計算、重複検出、VNet分析、AKSネットワーク計画に対応し、Python標準ライブラリのみでTerraform向け出力を生成します。
主な機能
- 01CIDR計算とサブネット分割
- 02VNetの使用状況と空き領域の分析
- 03重複とAzure制約違反の検出
- 04first-fitによるサブネット配置検索
- 05複数環境のアドレス割り当て計画
- 06Terraform向け出力の生成
活用シーン
- 01ホスト数に応じたサブネットのサイズ決定
- 02デプロイ前のVNet設定確認
- 03複数環境のアドレス空間の計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill devops-network-calculator-for-azureインストール後、Claude Code で/devops-network-calculator-for-azureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
workflow.mdreferences/aks-networking-guide.mdazure-constraints.mdcidr-calculation-guide.mdsegmentation-patterns.mdscripts/network-calc.pytemplates/multi-env-plan.md.tplnsg-rules-aks.tfvars.tplvnet-layout.tfvars.tpl詳細
Azure ネットワーク計算ツール
オフラインで使える Azure ネットワーク計画ツールです。CIDR の計算、重複の検出、VNet の使用状況の分析、AKS ネットワークの計画、Terraform 対応の出力生成ができます。外部依存関係はなく、Python 標準ライブラリのみを使用します。
クイックスタート
# What CIDR do I need for 500 hosts?
python3 scripts/network-calc.py calculate --from-hosts 500
# Analyze current VNet
python3 scripts/network-calc.py analyze --from-tfvars terraform/terraform.tfvars
# Validate for overlaps (pre-commit compatible)
python3 scripts/network-calc.py validate --from-tfvars terraform/terraform.tfvars
# Find where to place a new subnet
python3 scripts/network-calc.py first-fit --vnet 10.50.0.0/20 \
--subnets "10.50.0.0/22,10.50.4.0/22,10.50.8.0/26,10.50.9.0/24" --hosts 500
コマンド
| コマンド | 用途 | リファレンス |
|---|---|---|
calculate | CIDR 情報、ホスト数の算出、サブネットの分割 | CIDR ガイド |
analyze | VNet の使用状況、空き領域の分析 | CIDR ガイド |
validate | 重複の検出、Azure 制約のチェック | Azure の制約 |
first-fit | 新しいサブネットに最適な配置を検索 | CIDR ガイド |
plan-multi | 複数環境の VNet 割り当て | セグメンテーション |
プロジェクトのコンテキスト
参照 VNet:10.50.0.0/20(4,096 IP アドレス、使用率 57.8%)
| サブネット | CIDR | 使用可能数 |
|---|---|---|
| GatewaySubnet | 10.50.0.0/22 | 1,019 |
| PublicSubnet | 10.50.4.0/22 | 1,019 |
| AzureBastionSubnet | 10.50.8.0/26 | 59 |
| PrivateSubnet | 10.50.9.0/24 | 251 |
| 利用可能な空き領域 | 1,708 |
主なファイル:terraform/terraform.tfvars、terraform/networking.tf、terraform/nsg.tf
Azure クイックリファレンス
- サブネットごとに 5 個の予約済み IP アドレス(.0、.1、.2、.3、ブロードキャスト)
- Bastion: 最小 /26 | Gateway: 最小 /27 | Firewall: 最小 /26
- VNet あたりのサブネット最大数: 3,000 | NSG ルール最大数: 1,000
- 詳細なリファレンス:Azure の制約
リファレンスガイド
| ガイド | 読むタイミング |
|---|---|
| CIDR 計算ガイド | サブネットのサイズ設定、空き領域の分析、重複の検出 |
| AKS ネットワークガイド | CNI の比較、ポッド/サービスの CIDR、ノードのサイズ設定 |
| セグメンテーションパターン | 設計パターン、アンチパターン、判断マトリックス |
| Azure の制約 | 固定上限、命名規則、予約済みアドレス |
テンプレート
| テンプレート | 用途 |
|---|---|
| VNet レイアウト | VNet 構成用の Terraform 変数ブロック |
| AKS NSG ルール | AKS ワークロード用の NSG ルール |
| 複数環境の計画 | 複数環境の計画出力 |
実行
./workflow.md の手順に従ってください。
注意点
- Azure がサブネットごとに予約する IP アドレスは 2 個ではなく 5 個です: 標準の /29 で使用できる IP アドレスは 6 個ではなく 3 個です。/29 で AKS ノードプールのサイズを設定すると、スケーリングに必要な IP アドレスが不足し、スケール中に
InsufficientFreeAddressesInSubnetが発生します。 - GatewaySubnet は名前が固定です: サブネット名が正確に
GatewaySubnetでないと、Azure は VPN Gateway のアタッチを拒否します。AzureBastionSubnetとAzureFirewallSubnetも同様です。スペルミスは plan ではなく apply 時にエラーになります。 - AKS Azure CNI はポッドごとにサブネットの IP アドレスを 1 個消費します: 1 ノードあたり 30 ポッドの 30 ノードクラスターには、30 個ではなく 900 個以上のサブネット IP アドレスが必要です。まず
--max-podsを計画してください。後から CNI を切り替えるには、クラスターの再構築が必要です。 - first-fit が選ぶのは最も賢い空き領域ではなく、最も小さい空き領域です: /22 の空き領域に /24 を配置すると、分断されて使えない /25 の残りができます。長期運用する VNet では
plan-multiを使用し、拡張用の空き領域を明示的に確保してください。 - オンプレミスとの CIDR 重複は、ピアリングするまで表面化しません: 10.0.0.0/16 の VNet は単独では問題ないように見えますが、ExpressRoute のピアリングでは企業ネットワークの範囲と重なるルートがブラックホール化します。企業全体の IPAM と照合して検証してください。
- NSG ルールの上限 1,000 は、方向ごとではなく合計です: インバウンド、アウトバウンド、既定のルール、Azure が自動設定するルールで上限を共有します。余裕を持たせないと、スケーリング時に上限に達します。
コメント
Markdown 対応