入れ子になったデプロイでは、メイン テンプレート内から Azure Resource Manager (ARM) のセカンダリ テンプレートが実行されます。 この記事では、テンプレートを入れ子にして Azure DevTest Labs 環境をデプロイする例を示します。 DevTest Labs 環境には、サービスとしてのプラットフォーム (PaaS) リソースがインストールされた複数のサービスとしてのインフラストラクチャ (IaaS) 仮想マシン (VM) が含まれています。 ARM テンプレートを使用して、PaaS リソースと VM をプロビジョニングすることができます。
目的に特化して対象を絞った一連のテンプレートにデプロイを分解することにより、テスト、再利用、読みやすさの点でメリットを得ることができます。 入れ子になったテンプレート (コード サンプルを含む) に関する一般的な情報については、「Azure リソース デプロイ時のリンクされたテンプレートおよび入れ子になったテンプレートの使用」を参照してください。
Note
環境を作成するには、Azure Deployment Environments (ADE) を強くお勧めします。 ADE を使用すると、開発者は、プロジェクトベースのテンプレートを使用してアプリ インフラストラクチャを迅速にデプロイでき、開発チームにとって一貫性のある安全な環境が確保されます。
Azure Deployment Environments の詳細については、Azure Deployment Environments のドキュメントを参照してください。
Visual Studio を使用して入れ子になったテンプレートをデプロイする
Visual Studio の Azure リソース グループ プロジェクト テンプレートを使用すると、ARM テンプレートの開発とデバッグが簡単になります。 入れ子になったテンプレートをメインの azuredeploy.json テンプレート ファイルに追加すると、Visual Studio によって次の項目が追加され、テンプレートの柔軟性が向上します。
- セカンダリ テンプレートとパラメーター ファイルが含まれるサブフォルダー
- メイン テンプレート ファイル内の変数名
- 2 つのキー パラメーター (
_artifactsLocation
と_artifactsLocationSasToken
)
DevTest Labs では、ラボにリンクする Git リポジトリに ARM テンプレートを格納します。 いずれかのリンクされたリポジトリ テンプレートを使用して新しい環境を作成すると、デプロイではテンプレート ファイルがラボの Azure Storage コンテナーにコピーされます。 入れ子になったテンプレート リソースをリポジトリとメイン テンプレート ファイルに追加すると、Visual Studio によって _artifactsLocation
と _artifactsLocationSasToken
の値が識別され、サブフォルダーがストレージ コンテナーにコピーされ、場所と Shared Access Signature (SaS) トークンがパラメーター ファイルに挿入されます。
入れ子になったテンプレート フォルダーの構造
次のテンプレートの例では、Git リポジトリ フォルダーにサブフォルダー nestedtemplates があり、その中に入れ子になったテンプレート ファイル NestOne.json と NestOne.parameters.json が含まれています。 azuredeploy.json メイン テンプレート ファイルでは、成果物の場所、入れ子になったテンプレート フォルダー、入れ子になったテンプレート ファイル名を使用して、セカンダリ テンプレートの URI が作成されます。 パラメーター ファイルの URI は、成果物の場所、入れ子になったテンプレート フォルダー、入れ子になったテンプレート パラメーター ファイルです。 入れ子になったテンプレート サブフォルダーをプライマリ フォルダーに追加できますが、入れ子は 1 レベルだけです。
次のスクリーンショットは、Visual Studio のプロジェクト構造を示しています。
入れ子になったデプロイの例
次の例は、入れ子になったデプロイのメインの azuredeploy.json ARM テンプレート ファイルを示しています。
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"_artifactsLocation": {
"type": "string"
},
"_artifactsLocationSasToken": {
"type": "securestring"
}},
"variables": {
"NestOneTemplateFolder": "nestedtemplates",
"NestOneTemplateFileName": "NestOne.json",
"NestOneTemplateParametersFileName": "NestOne.parameters.json"},
"resources": [
{
"name": "NestOne",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"dependsOn": [ ],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parametersLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
}
}
}],
"outputs": {}
次のステップ
- DevTest Labs 環境の詳細については、「ARM テンプレートを使用して DevTest labs 環境を作成する」を参照してください。
- コード サンプルを含む Visual Studio Azure リソース グループ プロジェクト テンプレートの使用方法の詳細については、「Visual Studio での Azure リソース グループの作成とデプロイ」を参照してください。