テンプレートを使用して Azure 仮想マシンをデプロイする
Contoso では VM のデプロイに Azure Resource Manager を役立てることもできます。 Azure Resource Manager は、デプロイ テンプレートに基づく宣言型のデプロイ方法をサポートしています。 結果として得られたデプロイによって、テンプレートの内容に従ってターゲット リソース グループまたはサブスクリプションが設定されます。
テンプレートの利点
グラフィカル ユーザー インターフェイス (GUI) や、スクリプト、プログラミング言語に依存する従来のデプロイ方法と比較して、テンプレートには固有の利点がいくつかあります。 スクリプトと同様に、自動化された方法でマルチコンポーネント ソリューションを容易にデプロイできます。 ただし、スクリプトとは異なり、これらのソリューションをプロビジョニングするために必要な個々の手順が明示的に指定されるわけではありません。 代わりに、意図した最終状態が定義されるだけです。 こうすることにより、Azure プラットフォームに組み込まれているインテリジェンスを利用して、最適な方法で必要なすべてのリソースをデプロイできます。 その結果、デプロイにかかる時間が短縮され、エラーが発生する可能性が減少します。 必要に応じて、リソース間の依存関係を定義して、リソースのプロビジョニング シーケンスを制御することもできます。
デプロイ テンプレートは、同一の汎用的設計で複数のソリューションをプロビジョニングする必要がある場合に最適です。 たとえば、同じテンプレートを、開発、テスト、品質保証、および運用環境を表す別々のリソース グループにデプロイできます。 これらの間の潜在的な違いを考慮して、テンプレート内の特定の値をパラメーターで置き換え、デプロイ時にこれらのパラメーターに値を割り当てることができます。
テンプレートは "べき等" です。つまり、同じリソース グループに複数回デプロイしても同じ結果を得ることができます。 これは、元のデプロイを再作成する場合や、デプロイ後の変更によって発生する問題を修復する場合に便利です。 テンプレートでは VM 拡張機能がサポートされており、デプロイの一部として Azure VM 内のオペレーティング システムを構成することができます。 これらの拡張機能には、PowerShell Desired State Configuration (DSC)、Chef、Puppet などの構成管理サービスが含まれます。
テンプレートを使用する際の考慮事項
Azure Resource Manager テンプレートには、1 つ以上の Azure リソースについての JSON 形式による定義、および構成のカスタマイズを容易にするパラメーターと変数が含まれています。 リソース テンプレートを作成および使用するときは、次の点に配慮する必要があります。
- デプロイするリソース。
- リソースが配置される場所。
- 使用するリソース プロバイダーのアプリケーション プログラミング インターフェイス (API) のバージョン。
- リソース間に依存関係があるかどうか。
- リソースのプロパティの値を指定するタイミング。 これらの値はテンプレートに含めることができますが、通常は、対応するパラメーターを使用してデプロイ時に指定することをお勧めします。
Azure Resource Manager テンプレートの作成
リソース テンプレートは、次のセクションから構成されています。
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
次の表では、上記のコード サンプルの各セクションについて説明します。
要素名 | 説明 |
---|---|
$schema | テンプレートの構文を記述する JSON スキーマ ファイルの場所を示す定義済みの URL。 |
contentVersion | テンプレートの内容変更を追跡するために定義するカスタム値。 |
parameters | デプロイ時に、対話的に、またはパラメーター ファイルを使用して指定できるパラメーター。 |
variables | テンプレートのデプロイ時に参照される値を格納する変数。 |
functions | テンプレートのデプロイ時に計算を容易にするカスタム関数。 |
resources | デプロイの結果としてプロビジョニングまたは変更されるリソース。 |
outputs | デプロイによって返される値。 |
Azure Resource Manager テンプレートを使用して Azure VM をデプロイする
Azure Resource Manager テンプレートを作成したら、次の表に示す方法のいずれかを使用してリソースをデプロイできます。
メソッド | 説明 |
---|---|
Azure PowerShell | New-AzResourceGroupDeployment コマンドレットを実行して、デプロイを開始できます。 テンプレート ファイルを参照するには、テンプレートの場所に応じて、-TemplateFile パラメーター (ローカルのコンピューターに保存されている場合) または -TemplateUri パラメーター (パブリックにアクセスできる場所に存在する場合) を使用します。 このコマンドレットによって、テンプレートに定義されているリソースが、-ResourceGroupName パラメーターの値として指定したリソース グループにデプロイされます。 また、テンプレートに指定されているパラメーターの値を入力することが必要になる場合もあります。 または、デプロイ時に、テンプレート内のこれらのパラメーターに既定値を直接割り当てたり、値が格納されたパラメーター ファイルを参照したりすることもできます。 |
Azure CLI | --template-file または --template-uri* パラメーターのいずれかと --resource_group パラメーターを指定して az deployment group create Azure CLI コマンドを実行すると、デプロイを開始できます。 PowerShell ベースのデプロイと同様に、テンプレートで指定したパラメーターの値を入力することが必要になる場合もあります。 または、デプロイ時に、テンプレート内のこれらのパラメーターに既定値を直接割り当てたり、値が格納されたパラメーター ファイルへの参照として割り当てたりすることもできます。 |
Azure ポータル | Azure portal の [カスタム デプロイ] ペインを使用すると、Azure Resource Manager テンプレートベースのリソースを簡単にデプロイできます。 これにアクセスするには、Azure portal で、[カスタム テンプレートのデプロイ] Marketplace 項目を検索して選択します。 [カスタム デプロイ] ペインでは、ブラウザーベースのテンプレート エディターで独自のテンプレートを作成したり、定義済みのテンプレートの 1 つを選択したり、既存の GitHub クイックスタート テンプレートを読み込んだりできます。 |
Azure クイックスタート テンプレートの GitHub リポジトリ | GitHub で公開されているすべてのクイックスタート テンプレートには、対応する [Azure に配置する] リンクがあります。 リンクを選択すると、ブラウザーが Azure portal の [カスタム デプロイ] ペインに自動的にリダイレクトされます。 デプロイを開始するために必要なのは、必須パラメーターの値を指定することだけです。 |
Microsoft Visual Studio または Visual Studio Code | Visual Studio と Visual Studio Code を使用して、テンプレートを作成およびデプロイできます。 |
追加の参考資料
詳しくは、次のドキュメントをご覧ください。
- Azure Resource Manager テンプレートの構造と構文の詳細
- Resource Manager テンプレートから Windows 仮想マシンを作成する
- Azure クイックスタート テンプレート
- Visual Studio での Azure リソース グループの作成とデプロイ
- クイック スタート:Visual Studio Code を使って Azure Resource Manager テンプレートを作成する
注意
テンプレートを使用して Azure VM を作成する場合は、Azure クイックスタート テンプレートを使用した VM のデプロイに関するハンズオン演習をお試しください。