次の方法で共有


入れ子になったテンプレートを使用して DevTest Labs 環境をデプロイする

入れ子になったデプロイでは、メイン テンプレート内から 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.jsonNestOne.parameters.json が含まれています。 azuredeploy.json メイン テンプレート ファイルでは、成果物の場所、入れ子になったテンプレート フォルダー、入れ子になったテンプレート ファイル名を使用して、セカンダリ テンプレートの URI が作成されます。 パラメーター ファイルの URI は、成果物の場所、入れ子になったテンプレート フォルダー、入れ子になったテンプレート パラメーター ファイルです。 入れ子になったテンプレート サブフォルダーをプライマリ フォルダーに追加できますが、入れ子は 1 レベルだけです。

次のスクリーンショットは、Visual Studio のプロジェクト構造を示しています。

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": {}

次のステップ