mcpField
A
azure-landing-zone-checklist

azure-landing-zone-checklist

github.com/julianobarbosaクラウド・DevOps1466 回インストール2 日前に更新
リポジトリ

azure-landing-zone-checklist について

BicepまたはTerraformによるデプロイ前に、Microsoft Azure Landing Zone Acceleratorのチェックリストを作成するスキルです。決定事項を集め、CAFに基づく既定案を適用し、サブスクリプションとIP情報を対応付け、Excelで人の確認が必要な項目を示します。

主な機能

  1. 01Excelチェックリストの読み取りと記入
  2. 02質問を分けたデプロイ判断の収集
  3. 03サブスクリプションとALZの役割の対応付け
  4. 04既存のIPアドレス計画の反映
  5. 05推奨事項と要確認項目への注記
  6. 06BicepとTerraformのシートへの対応

活用シーン

  1. 01ALZ Acceleratorデプロイの準備
  2. 02インフラ構成の判断をチェックリストに反映
  3. 03サブスクリプションとネットワークの前提条件確認
  4. 04人による確認が必要な未決事項の特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill azure-landing-zone-checklist

インストール後、Claude Code で/azure-landing-zone-checklistを入力して読み込まれたか確認します。

同梱ファイルreferences/alz-best-practices.md

詳細

Azure Landing Zone チェックリストスキル

このスキルは、Microsoft Azure Landing Zone(ALZ)Accelerator のチェックリスト(ALZ Accelerator ツールを使用して Bicep または Terraform で ALZ をデプロイする前に必要なすべての決定事項を記録するスプレッドシート)の記入を支援します。

目標は、すべての決定に根拠があり、ベストプラクティスがデフォルトで適用され、人による入力が必要な項目がユーザーの注意を引くよう明確に示された、記入済みの Excel チェックリストを作成することです。

重要な理由

ALZ Accelerator のチェックリストは、プラットフォームランディングゾーンのデプロイにおける唯一の信頼できる情報源です。誤りがあると、ネットワークの設定ミス、セキュリティ上の欠落、あるいは何時間ものやり直しが発生します。このスキルは、ユーザーの既存のインフラストラクチャ(IP 範囲、サブスクリプション、命名規則)を尊重しながら、Microsoft の Cloud Adoption Framework(CAF)の推奨事項を適用することで、一貫性を確保します。

ワークフロー

フェーズ 1:チェックリストを読む

openpyxl を使用してアップロードされた .xlsx チェックリストを読み込み、その構成を把握します。ALZ チェックリストには通常、次の 3 つのタブがあります。

  • Accelerator - Bootstrap:IaC の種類、VCS、サブスクリプション、命名、CI/CD の設定
  • Accelerator - Bicep:シナリオの選択、コンポーネントの切り替え、IP アドレス、ポリシー
  • Accelerator - Terraform:Bicep と同じ項目に加え、追加オプション(AMBA、Sovereign LZ)

チェックリストを解析して、すでに値が入力されているフィールド(列 F = "Chosen Value")と空欄のフィールドを特定します。これにより、ユーザーがすでに決定した項目と、入力が必要な項目を把握できます。

フェーズ 2:ユーザーに質問する

構造化された質問を通じて決定事項を集めます。ユーザーに負担をかけないよう、3~4 問ずつまとめて質問します。次の順番で優先します。

バッチ 1 — 基本的な決定事項:

  • IaC の種類(Bicep または Terraform)
  • バージョン管理システム(Azure DevOps、GitHub、またはローカル)
  • ネットワークトポロジーのシナリオ(Hub & Spoke と vWAN、単一リージョンと複数リージョン、Azure Firewall と NVA)
  • Azure リージョン

バッチ 2 — コンポーネントに関する決定事項:

  • デプロイするコンポーネント(DDoS、Private DNS、Bastion、VPN Gateway、ExpressRoute、Zero Trust)
  • セキュリティ態勢(AMA、Defender プラン)

バッチ 3 — 環境固有の詳細:

  • Azure DevOps / GitHub の組織名とプロジェクト名
  • サブスクリプション ID(Management、Connectivity、Identity、Security)
  • パイプラインの承認者
  • IP アドレス設計(既存のドキュメントがあるか確認します)

ユーザーが「ベストプラクティスを使用して」と言った場合や、決定を委ねた場合は、references/alz-best-practices.md の推奨事項を適用します。推奨事項を提案する理由は必ず説明してください。ユーザーは、理解できる推奨事項を信頼します。

フェーズ 3:サブスクリプションを割り当てる

ユーザーがサブスクリプションの一覧(az account list などから取得)を提示した場合、命名パターンに基づいてサブスクリプションを ALZ の役割に割り当てます。

パターンALZ の役割
*mgmt*、*management*Management
*connectivity*、*network*、*hub*Connectivity
*identity*、*ad*、*entra*Identity
*security*、*sentinel*、*defender*Security

必要なサブスクリプションが不足している場合(Security が不足していることがよくあります)、黄色でハイライトし、選択肢を説明するコメントを付けます。

  1. 専用のサブスクリプションを作成する(推奨)
  2. Management サブスクリプションと共有する(予算に制約がある場合の代替案)
フェーズ 4:IP アドレス設計を統合する

ユーザーが IP に関するドキュメント(Markdown、CSV、Excel、またはテキスト)を提示した場合、解析して次の情報を抽出します。

  • サブスクリプションレベルの CIDR ブロック — ALZ のハブ/スポーク VNet に割り当てます
  • 既存のハブ VNet の構成 — サブネットの割り当て(Gateway、Firewall、Bastion、共有サービス)を特定します
  • オンプレミスのパブリック IP — VPN/ファイアウォールルールの参照用にコメントへ記載します
  • AKS ネットワーク — 該当する場合は Pod/サービスの CIDR を記載します

ALZ ハブ VNet には、Connectivity サブスクリプションの CIDR ブロックを使用して、次のサブネット構成を推奨します。

Hub VNet: <connectivity-base>/16
  GatewaySubnet:                <base>.0.0/27     (30 hosts)
  AzureFirewallSubnet:          <base>.0.64/26    (62 hosts)
  AzureFirewallManagementSubnet:<base>.0.128/26   (62 hosts)
  AzureBastionSubnet:           <base>.0.192/26   (62 hosts)
  Shared Services:              <base>.1.0/24     (254 hosts)
  DNS Resolver Inbound:         <base>.2.0/28
  DNS Resolver Outbound:        <base>.2.16/28

IP に関するドキュメントが提示されない場合は、ALZ のデフォルトを使用し、確認が必要であることを明示します。

フェーズ 5:チェックリストに記入する

openpyxl を使用して、適切なタブの列 F(「選択した値」)に値を書き込みます。一貫性のある書式を適用してください。

from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.comments import Comment

# Confirmed values — green background
green_fill = PatternFill('solid', fgColor='CCE5CC')

# Items needing user action — yellow background + red bold text
yellow_fill = PatternFill('solid', fgColor='FFFF00')
action_font = Font(bold=True, color='FF0000', size=10)

# Informational notes — italic yellow background
note_fill = PatternFill('solid', fgColor='FFFFCC')
note_font = Font(italic=True, size=10)

入力するすべてのセルについて:

  • 判断理由またはベストプラクティスの参照先を説明するコメントを追加します
  • 確定した判断には緑色の塗りつぶしを使用します
  • ユーザーの対応が必要な項目(「未定義」「未提供」など)には、黄色の塗りつぶしと赤色のテキストを使用します
  • ユーザーによる確認が必要なデフォルト値には、薄い黄色の塗りつぶしと斜体を使用します

タブごとの処理:

ユーザーが選択した IaC に該当するタブだけに記入します。以前の試行で別のタブに値が入力されている場合は、そのタブの値を消去します。アクティブなタブでは、次のように処理します。

  1. シナリオセクション:選択したシナリオを「はい」、それ以外をすべて「いいえ」に設定します。選択した項目は、より明るい緑色で強調表示します。
  2. オプションセクション:ユーザーが選択したコンポーネントを適用します。明示的に話し合われていないオプションには、ベストプラクティスのデフォルト値を適用し、その旨をコメントに記載します。
  3. ブートストラップタブ:IaC の選択にかかわらず、必ず記入します。このタブは共通です。
フェーズ 6:結果を提示する

チェックリストへの記入を保存した後、次の操作を行います。

  1. 入力した値をすべて示す概要表を出力します
  2. ユーザーの対応が必要な項目(黄色で強調表示された項目)を一覧表示します
  3. アーキテクチャ上の考慮事項(例:ALZ のリージョンが既存のインフラストラクチャと異なる場合に必要となるクロスリージョンのピアリング)を指摘します
  4. ダウンロード用のファイルリンクを提示します

ベストプラクティスの推奨事項

推奨事項の全容については、references/alz-best-practices.md を参照してください。ユーザーから指定がない場合に適用する主要なデフォルト値は次のとおりです。

  • プライベートネットワーク:有効(true)(状態を保存するストレージをパブリックにアクセス可能にしてはいけません)
  • CI/CD テンプレート専用リポジトリ:有効(true)(コードとパイプライン定義の間にセキュリティ境界を設けます)
  • ブランチポリシー:有効(true)(すべての変更に PR を必須とします)
  • セルフホストエージェント/ランナー:有効(true)(プライベートネットワークに必要です)
  • DDoS 保護:はい(すべての VNet リソースに対するネットワーク層の保護)
  • プライベート DNS ゾーン:はい(ハブ・スポーク構成でプライベートエンドポイントを使用するために必要です)
  • Azure Bastion:はい(パブリック IP に公開せずに VM へ安全にアクセスできます)
  • AMA(Azure Monitoring Agent):有効のままにします(監視を一元化します)
  • Defender プラン:有効のままにします(すべての種類のリソースを対象に脅威を検出します)
  • ゼロトラスト:はい(最小権限のアクセスとマイクロセグメンテーションを実現します)
  • AMBA アラート(Terraform のみ):はい(プラットフォームリソースをプロアクティブに監視します)
  • Sovereign Landing Zone:いいえ(コンプライアンス上、明示的に必要な場合を除きます)

クロスリージョンに関する考慮事項

ユーザーの既存のインフラストラクチャが ALZ のデプロイ先とは異なるリージョンにある場合は、ブートストラップタブのリージョンに関するコメントでその点を指摘します。ALZ ハブと既存のハブ・スポークトポロジーとの間のクロスリージョン VNet ピアリングを計画する必要があります。

セル参照マップ

チェックリストの構造は固定されています。行ずれによるバグを避けるため、値を書き込む際は必ず以下の正確なセル参照を使用します。列 F に書き込む前に、列 B(名前)が想定するフィールドと一致していることを必ず確認してください。

Bootstrap タブ(アクセラレーター - Bootstrap)
行セルフィールド(列 B)構成設定(列 D)
4F4Infrastructure as Codeiac_type
5F5バージョン管理システムbootstrap_module_name
6F6スターターモジュールstarter_module_name
8F8Bootstrap リソースのリージョンbootstrap_location
9F9親管理グループ IDroot_parent_management_group_id
10F10管理サブスクリプション IDsubscription_id_management
11F11接続サブスクリプション IDsubscription_id_connectivity
12F12ID サブスクリプション IDsubscription_id_identity
13F13セキュリティサブスクリプション IDsubscription_id_identity(注:テンプレートの誤記)
15F15Bootstrap サブスクリプション IDbootstrap_subscription_id
16F16リソースの命名:サービス名service_name
17F17リソースの命名:環境名environment_name
18F18リソースの命名:接尾辞番号postfix_number
21F21テンプレートに別のリポジトリを使用するuse_separate_repository_for_templates
22F22プライベートネットワークを使用するuse_private_networking
23F23自分の IP からのストレージアクセスを許可するallow_storage_access_from_my_ip
24F24承認者を適用するapply_approvers
25F25ブランチポリシーを作成するcreate_branch_policies
28F28Azure DevOps PATazure_devops_personal_access_token
29F29Azure DevOps エージェント PATazure_devops_agents_personal_access_token
30F30Azure DevOps 組織azure_devops_organization_name
31F31Azure DevOps のレガシー URLazure_devops_use_organisation_legacy_url
32F32Azure DevOps プロジェクトを作成するazure_devops_create_project
33F33Azure DevOps プロジェクトazure_devops_project_name
34F34セルフホストエージェントを使用するuse_self_hosted_agents

注:行 7、14、19、20、26、27、35、36、41 は空欄またはセクション見出しです。スキップしてください。

Bicep タブ(アクセラレーター - Bicep)— シナリオ
行セルシナリオ
6F6マルチリージョン Hub & Spoke + Azure Firewall
7F7マルチリージョン vWAN + Azure Firewall
8F8マルチリージョン Hub & Spoke + NVA
9F9マルチリージョン vWAN + NVA
10F10管理グループ、ポリシー、管理のみ
11F11単一リージョン Hub & Spoke + Azure Firewall
12F12単一リージョン vWAN + Azure Firewall
13F13単一リージョン Hub & Spoke + NVA
14F14単一リージョン vWAN + NVA
Bicep タブ — オプション(行 17~30)
行セルオプション
17F17リソースの命名規則
18F18カスタム管理グループ名
19F19DDOS Protection Plan をデプロイする
20F20Private DNS をデプロイする
21F21Bastion Host をデプロイする
22F22VPN Gateway をデプロイする
23F23ExpressRoute Gateway をデプロイする
24F242 つを超えるリージョンにデプロイする
25F25IP アドレス指定
26F26ポリシー割り当ての適用モードを変更する
27F27ポリシー割り当てを削除する
28F28Azure Monitoring Agent を無効にする
29F29Defender プランを無効にする
30F30ゼロトラストセキュリティ
Terraform タブ(Accelerator - Terraform)

Bicep と同じシナリオのレイアウトです(6~14 行)。オプションは 17~32 行です。

行セルオプション
17F17リソースの命名規則
18F18カスタム管理グループ名
19F19DDOS Protection Plan のデプロイ
20F20Private DNS のデプロイ
21F21Bastion Host のデプロイ
22F22VPN Gateway のデプロイ
23F23ExpressRoute Gateway のデプロイ
24F243 つ以上のリージョンへのデプロイ
25F25IP アドレス指定
26F26ポリシー割り当ての適用モードの変更
27F27ポリシー割り当ての削除
28F28Azure Monitoring Agent の無効化
29F29Azure Monitoring Baseline Alerts (AMBA) のデプロイ
30F30Defender Plans の無効化
31F31ゼロトラストセキュリティ
32F32Sovereign Landing Zone

検証方法:値を書き込む前に、セル B{row} を読み取り、想定されるフィールド名と一致することを確認してください。一致しない場合は、シートをスキャンして正しい行を探してください。これにより、テンプレートのバージョンの違いによるデータのサイレント破損を防げます。

出力形式

最終成果物は次の内容を含む .xlsx ファイルです。

  • 元のテンプレートの 3 つのタブすべてを保持
  • 選択した値を列 F に入力
  • 理由とベストプラクティスへの参照を記載したセルコメント
  • 色分け:緑(確認済み)、黄色(対応が必要)、薄い黄色(デフォルト値の確認が必要)
  • 決定事項と要確認項目をすべて記載した、会話内での明確な概要

注意点

  • openpyxl の行インデックスは 1 始まりです — インデックスのずれによるバグは、誤った行を気づかないまま破損させます。確定前に cell.value で読み戻して確認してください。
  • サブスクリプションの正規表現による照合は、標準外の命名では失敗します(例:sub-xyz-platform-mgmt)— パターンが一致しない場合は、列挙に切り替えてください。
  • リージョン間の考慮事項:リージョン間の VNet ピアリングではエグレス トラフィックに料金が発生します。既定の ALZ テンプレートではこの料金は算出されません。
  • Excel のチェックボックスとセルの値:openpyxl ではチェックボックスの状態を書き込めません。チェック済みを示すには、セルの値に "✓" を使用し、名前付き範囲を設定してください。
  • サブスクリプションのクォータ反映:要求したクォータの増加は、実際にクォータが適用される前に「Approved」と表示されます。az vm list-usage で確認してください。

コメント