第 7 章 Azure のコンピューティングリソースをデプロイおよび管理する(20〜25%)
この章で学ぶこと
この章に出てくる用語
ポータルで操作しても、CLI でコマンドを打っても、最終的な要求はすべて Azure Resource Manager(ARM) という管理レイヤーを通る。認証・認可・ポリシーの評価もここで行われる。

補足
「ポータルで作った VM を CLI から見ても同じに見える」のは、どちらも同じ ARM に対して同じリソースを操作しているからだ。第 2 章の RBAC も第 3 章の Policy も、この層で効いている。
ARM テンプレートは JSON で書く宣言的なファイルだ。「どういう手順で作るか」ではなく「どうなっていてほしいか」を書く。だから何度実行しても同じ結果になる(べき等)。

| 要素 | 役割 | よく問われる点 |
|---|---|---|
| $schema | スキーマの場所。デプロイのスコープも決まる | 必須 |
| parameters | デプロイのたびに変えたい値を外から渡す | 既定値・許可値・型を指定できる |
| variables | テンプレート内で繰り返し使う値を組み立てる | 外からは渡せない |
| resources | 実際に作るリソースを列挙する | type と apiVersion が必須 |
| outputs | デプロイ後に返す値(接続文字列、IP など) | 後続の処理へ渡すのに使う |
試験では
parameters は外から渡す値、variables は中で組み立てる値。「環境ごとに値を変えたい」なら parameters。「同じ文字列を何度も書きたくない」なら variables。この違いがそのまま問われる。
リソースの作成順序を明示するのが dependsOn だ。指定しなければ、Azure は可能な限り並列で作ろうとする。
試験では
「仮想ネットワークができる前に VM を作ろうとして失敗する」という状況の答えは dependsOn を追加する。並列実行が既定であることを知らないと解けない。
AZ-104 でいちばん事故につながる設定がこれだ。デプロイモードには増分(Incremental)と完全(Complete)があり、既定は増分。

| 増分(Incremental) | 完全(Complete) | |
|---|---|---|
| 既定 | ○ | × |
| テンプレートに無いリソース | そのまま残る | 削除される |
| 用途 | 追加・更新 | リソースグループをテンプレートどおりに揃える |
試験では
完全モードは、テンプレートに書かれていないリソースをリソースグループから削除する。「デプロイしたら関係ないリソースまで消えた」という設問の答えはこれ。実行前に what-if を使えば、何が作成・変更・削除されるかを事前に確認できる。
# リソースグループにデプロイする (PowerShell: New-AzResourceGroupDeployment)
az deployment group create -g rg \
--template-file main.bicep \
--parameters @params.json
# 何が変わるかを事前に見る
az deployment group what-if -g rg \
--template-file main.bicep
# 完全モードで実行する(要注意)
az deployment group create -g rg \
--mode Complete --template-file main.json
# サブスクリプションスコープへデプロイ (PowerShell: New-AzSubscriptionDeployment)
az deployment sub create --location japaneast \
--template-file sub.bicepBicep は ARM テンプレートを簡潔に書くための言語(DSL)だ。JSON の入れ子と文字列関数の読みにくさを解消し、モジュール化もしやすい。ただし実行されるのは最終的に ARM テンプレートで、Bicep はデプロイ時に変換される。

| 操作 | 向き | コマンド |
|---|---|---|
| build | Bicep → ARM テンプレート(JSON) | az bicep build |
| decompile | ARM テンプレート(JSON) → Bicep | az bicep decompile |
| エクスポート | 既存のリソースグループ → ARM テンプレート | az group export |
試験では
変換の向きを取り違えないこと。「既存の JSON テンプレートを Bicep に移行したい」→ decompile。
試験では
エクスポートしたテンプレートは、そのままでは再デプロイできないことがある。シークレットが含まれない、一部のリソースがエクスポートに対応していない、といった理由で手直しが必要になる。「エクスポートすればそのまま別環境に展開できる」という選択肢は誤り。
補足
Bicep のファイルは .bicep 拡張子で、Azure CLI / PowerShell がデプロイ時に自動でトランスパイルしてくれる。事前に az bicep build する必要は通常ない。
この章のまとめ