第 7 章 Azure のコンピューティングリソースをデプロイおよび管理する(20〜25%)

ARM テンプレートと Bicep

この章で学ぶこと

  • Azure Resource Manager テンプレートまたは Bicep ファイルを解釈する
  • 既存の Azure Resource Manager テンプレートを変更する
  • 既存の Bicep ファイルを変更する
  • Azure Resource Manager テンプレートまたは Bicep ファイルを使用してリソースをデプロイする
  • デプロイを Azure Resource Manager テンプレートとしてエクスポートするか、Azure Resource Manager テンプレートを Bicep ファイルに変換する

この章に出てくる用語

ARM テンプレート / Bicep
作りたい構成を 1 枚のファイルに書いておき、それを渡すだけで同じ環境を何度でも再現できるようにする仕組み。 ポータルで手作業で作ると、手順の記録が残らず、検証環境と本番環境を同じにするのも難しい。ARM テンプレートは JSON で書く正式な形式で、Bicep は同じことをもっと読みやすく書くための言語。Bicep は最終的に ARM テンプレートへ変換されてから実行される。

ポータルで操作しても、CLI でコマンドを打っても、最終的な要求はすべて Azure Resource Manager(ARM) という管理レイヤーを通る。認証・認可・ポリシーの評価もここで行われる。

図 7-1 すべての入口が ARM に集まる
図 7-1 すべての入口が ARM に集まる

補足

「ポータルで作った VM を CLI から見ても同じに見える」のは、どちらも同じ ARM に対して同じリソースを操作しているからだ。第 2 章の RBAC も第 3 章の Policy も、この層で効いている。

ARM テンプレートは JSON で書く宣言的なファイルだ。「どういう手順で作るか」ではなく「どうなっていてほしいか」を書く。だから何度実行しても同じ結果になる(べき等)。

図 7-2 テンプレートの 5 つの要素
図 7-2 テンプレートの 5 つの要素
要素役割よく問われる点
$schemaスキーマの場所。デプロイのスコープも決まる必須
parametersデプロイのたびに変えたい値を外から渡す既定値・許可値・型を指定できる
variablesテンプレート内で繰り返し使う値を組み立てる外からは渡せない
resources実際に作るリソースを列挙するtype と apiVersion が必須
outputsデプロイ後に返す値(接続文字列、IP など)後続の処理へ渡すのに使う

試験では

parameters は外から渡す値、variables は中で組み立てる値。「環境ごとに値を変えたい」なら parameters。「同じ文字列を何度も書きたくない」なら variables。この違いがそのまま問われる。

依存関係

リソースの作成順序を明示するのが dependsOn だ。指定しなければ、Azure は可能な限り並列で作ろうとする。

試験では

「仮想ネットワークができる前に VM を作ろうとして失敗する」という状況の答えは dependsOn を追加する。並列実行が既定であることを知らないと解けない。

AZ-104 でいちばん事故につながる設定がこれだ。デプロイモードには増分(Incremental)と完全(Complete)があり、既定は増分。

図 7-3 増分モードと完全モード
図 7-3 増分モードと完全モード
増分(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.bicep

Bicep は ARM テンプレートを簡潔に書くための言語(DSL)だ。JSON の入れ子と文字列関数の読みにくさを解消し、モジュール化もしやすい。ただし実行されるのは最終的に ARM テンプレートで、Bicep はデプロイ時に変換される。

図 7-4 build と decompile の向き
図 7-4 build と decompile の向き
操作向きコマンド
buildBicep → ARM テンプレート(JSON)az bicep build
decompileARM テンプレート(JSON) → Bicepaz bicep decompile
エクスポート既存のリソースグループ → ARM テンプレートaz group export

試験では

変換の向きを取り違えないこと。「既存の JSON テンプレートを Bicep に移行したい」→ decompile。

試験では

エクスポートしたテンプレートは、そのままでは再デプロイできないことがある。シークレットが含まれない、一部のリソースがエクスポートに対応していない、といった理由で手直しが必要になる。「エクスポートすればそのまま別環境に展開できる」という選択肢は誤り。

補足

Bicep のファイルは .bicep 拡張子で、Azure CLI / PowerShell がデプロイ時に自動でトランスパイルしてくれる。事前に az bicep build する必要は通常ない。

この章のまとめ

  1. すべての操作要求が通る管理レイヤー
  2. ARM テンプレートの記述スタイル
  3. 外から値を渡す要素と、中で組み立てる要素
  4. resources に必須の 2 項目
  5. dependsOn を書かないとどうなるか
  6. デプロイモードの既定

この章の根拠

試験 AZ-104 の学習ガイド(Microsoft Learn)

最終確認 2026-10-04 / 対応バージョン DEA 2026-05-04 改訂版