この記事では、Azure Resource Manager テンプレート (ARM テンプレート) についてよく寄せられる質問に回答します。
ARM テンプレートは、Azure にデプロイする対象を定義する JSON ファイルです。 テンプレートは、Azure のコードとしてのインフラストラクチャ ソリューションを実装するのに役立ちます。 組織は、必要なインフラストラクチャを別々の環境に繰り返し、確実にデプロイできます。
ARM テンプレートが Azure インフラストラクチャの管理をどのようにサポートするかの詳細については、「ARM テンプレートとは」を参照してください。
ARM テンプレートの作成を簡単にするには、適切なツールが必要です。 Visual Studio Code と Azure Resource Manager ツール拡張機能をインストールすることをお勧めします。 これらのツールの概要紹介については、「クイックスタート:Visual Studio Code を使用して ARM テンプレートを作成する」を参照してください。
ARM テンプレートの作成について学習する準備ができたら、ARM テンプレートの初心者向けチュートリアル シリーズを開始してください。 これらのチュートリアルでは、ARM テンプレートの構築プロセスを段階的に説明します。 テンプレートのさまざまなセクションと、それらがどのように連携するかについて学習します。 このコンテンツは、Learn モジュールにも用意されています。
お好みのオプションをお使いください。 どちらのサービスも、Azure へのデプロイを自動化するのに役立ちます。
他のコードとしてのインフラストラクチャ サービスと比較して、ARM テンプレートを使用することには利点があると考えられます。 これらの利点の詳細については、「ARM テンプレートを選択する理由」を参照してください。
テンプレートの実装方法に関するレコメンデーションについては、「ARM テンプレートのベストプラクティス」を参照してください。 テンプレートを作成したら、ARM テスト ツールキットを実行します。 テンプレートが推奨プラクティスと一致しているかどうかを確認します。
はい。リソース グループからテンプレートをエクスポートできます。 エクスポートされたテンプレートは、テンプレートについて理解するための出発点として適していますが、運用環境で使用する前に変更することをお勧めします。
テンプレートをエクスポートするときに、テンプレートに含めるリソースを選択できます。
はい。Azure サブスクリプションのレベルでテンプレートをデプロイするときに、テンプレートにリソース グループを作成できます。 リソース グループを作成してリソースをデプロイする例については、「リソース グループとリソース」を参照してください。
はい。詳細については、最新の API を使用して Azure サブスクリプションをプログラムで作成する方法に関するページをご覧ください。
デプロイする前に、ARM テスト ツールキットと what-if 操作をテンプレートで実行することをお勧めします。 テスト ツールキットでは、テンプレートでベスト プラクティスが使用されているかどうかが確認されます。 テンプレートの実装方法を改善する可能性がある変更が特定されると、警告が表示されます。
what-if 操作によって、テンプレートにより環境に対して行われる変更が表示されます。 デプロイされる前に、意図しない変更を確認できます。 また、what-if により、プレフライト検証中に検出できるエラーも返されます。 たとえば、テンプレートに構文エラーが含まれている場合は、そのエラーが返されます。 他にも、デプロイされたリソースの最終的な状態について判断できるエラーも返されます。 たとえば、テンプレートで既に使用されている名前を持つストレージ アカウントがデプロイされる場合は、what-if によってそのエラーが返されます。
VS Code には、リソースのプロパティを操作するための IntelliSense が用意されています。 また、プロパティと説明については、テンプレートのリファレンスで確認することもできます。
その新しい言語については、「Bicep とは」を参照してください。
現在、YAML をサポートする予定はありません。 新しいテンプレート言語では、YAML や JSON よりも使いやすいソリューションが提供されます。
はい、引き続き JSON テンプレートを使用できます。
はい。 「JSON と Bicep 間での ARM テンプレートの変換」を参照してください。
2026 年 7 月 11 日に、Blueprints (プレビュー) は非推奨になります。 既存のブループリントの定義と割り当てを Template Specs とデプロイ スタックに移行します。 ブループリント アーティファクトは、デプロイ スタックの定義に使用される ARM JSON テンプレートまたは Bicep ファイルに変換されます。 詳細については、「ブループリントをデプロイ スタックに移行する」を参照してください。
いいえ。ただし、テンプレート スペックは、リンクされたテンプレートで適切に機能するように設計されています。 親テンプレートをデプロイする前に、リンクされたテンプレートをパブリックにアクセスできるエンドポイントに移動する必要はありません。 代わりに、テンプレート スペックを作成するときに、親テンプレートとその成果物をまとめてパッケージ化します。
はい。ユーザーがテンプレート スペックに対する読み取りアクセス権を持っている限り、複数のサブスクリプションにわたって使用できます。テンプレート スペックは、複数のテナントにわたって使用することはできません。
はい。デプロイ スクリプトを使用してください。 テンプレートには、Azure PowerShell または Azure CLI のスクリプトを含めることができます。
それらのオプションは変わりなく、引き続き使用できます。 デプロイ スクリプトは、VM ゲストに関連しないアクションを実行するように設計されています。 VM 内のホスト オペレーティング システム上でスクリプトを実行する必要がある場合は、カスタム スクリプト拡張機能や DSC を選択することをお勧めします。 ただし、デプロイ スクリプトには、タイムアウト期間の設定などの利点があります。
はい。US Gov アリゾナと US Gov バージニアでデプロイ スクリプトを使用できます。
はい。what-if 機能を使用してください。 環境の現在の状態が評価され、デプロイ後に存在する状態と比較されます。 変更の概要を確認して、テンプレートに予期しない結果が含まれていないことを確認できます。
はい。両方のデプロイ モードがサポートされています。 増分モードの使用例については、「what-if 操作を実行する」を参照してください。 完全モードの使用例については、「削除の確定」を参照してください。
はい。what-if では、親テンプレートとそこにリンクされたテンプレートの状態が評価されます。
はい。what-if を使用して、パイプラインを続行するかどうかを確認できます。
Microsoft ではノイズの削減に取り組んでいます。 こちらの GitHub リポジトリで問題を送信することで、品質向上にご協力ください。 https://aka.ms/WhatIfIssues
ARM テンプレートを視覚化するうえで優れた働きをする、コミュニティによって提供された VS Code 拡張機能を用意しています。 デプロイしているリソースとそれらの間の関係が表示されます。
以前は、5 個のリソース グループに制限されていました。 最近では、800 個のリソース グループに増加しています。 詳細については、「サブスクリプション レベルでリソース グループとリソースを作成する」を参照してください。
Microsoft ではリソース グループのデプロイ履歴の管理方法を変更しています。 以前は、このエラーを回避するには、この履歴から手動でデプロイを削除する必要がありました。 2020 年 6 月から、この制限に近づくと、デプロイは履歴から自動的に削除されます。 詳細については、「デプロイ履歴からの自動削除」を参照してください。
履歴からデプロイを削除しても、デプロイされたリソースには影響しません。
はい。 テンプレートとパイプラインの使用方法の詳細については、「チュートリアル: Azure Pipelines を使用した ARM テンプレートの継続的インテグレーション」と「Azure Pipelines を使用した ARM テンプレートの統合」を参照してください。
はい。「GitHub Actions を使用した ARM テンプレートのデプロイ」を参照してください。
ARM テンプレートの概要については、「ARM テンプレートとは」を参照してください。