演習 - ARM テンプレートをデプロイする

完了

Note

初めてサンドボックスをアクティブ化して利用規約に同意すると、Microsoft アカウントが Microsoft Learn サンドボックスという名前の新しい Azure ディレクトリに関連付けられます。 あなたはコンシェルジェ サブスクリプションという名前の特殊なサブスクリプションに追加されます。

ここでは、URI を指定して、コンピューターおよび GitHub リポジトリから Azure Resource Manager (ARM) テンプレートをデプロイします。

重要

この演習では、Visual Studio Code 用 Azure Resource Manager ツールを使用します。 この拡張機能を必ず Visual Studio Code にインストールしてください。

Microsoft Learn Sandbox サブスクリプションを使用して環境を設定する

このユニットで各デプロイを実行するには、Visual Studio Code ターミナルから Azure アカウントにサインインする必要があります。

サンドボックスをアクティブ化したのと同じアカウントにサインインしていることを確認してください。

Azure にサインインする

  1. Visual Studio Code のターミナルから次のコマンドを実行して、Azure にサインインします。 このコマンドを実行すると、ブラウザーが開き、アカウントにサインインできます。

    Connect-AzAccount
    
  2. サインインすると、このアカウントに関連付けられているサブスクリプションの一覧がターミナルに表示されます。 サンドボックスをアクティブにしている場合、このリストにコンシェルジェ サブスクリプションが含まれています。

  3. サブスクリプション名を確認してください。 次のコマンドを実行すると、ご利用のサブスクリプション、名前、その ID が、読みやすい表形式で一覧表示されます。 Concierge Subscriptionを参照してください。

    Get-AzSubscription
    
  4. アクティブなサブスクリプションをコンシェルジェ サブスクリプションに変更します。

    $context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
    

既定のリソース グループを設定する

次に、サンドボックスで自分用に作成したリソース グループを、既定のリソース グループとして設定する必要があります。 この操作を実行するには、最初に、次のコマンドを実行してリソース グループを取得する必要があります。

Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault

このコマンドでは、前のコマンドから取得したリソースの名前を使用します (これは、learn-a73131a1-b618-48b8-af70-21af7ca420c4 のように表示されます)。このコマンドを使用すると、この演習の残りの Azure PowerShell コマンドでそのパラメーターを省略できます。

Note

通常、PowerShell または Azure CLI コマンドを実行してテンプレートをデプロイする場合、ターゲットのリソース グループ名を指定する必要があります。 前のコマンドを実行し、デプロイのコンテキストを設定しています。 PowerShell コマンド Set-AzDefault を実行してサンドボックスのリソース グループ名を指定しています。

Set-AzDefault -ResourceGroupName {Resource Group Name}

ローカル テンプレートをデプロイする

次の演習では、ローカル コンピューターからテンプレートをデプロイします。 前のセクションで既定のリソース グループを既に定義したので、独自の環境でデプロイする場合に通常使用するリソース グループの名前は、ここでは必要ありません。

  1. 作業を開始するには、次のテンプレート コードの内容をコピーして、ローカル ディレクトリ内のファイルに貼り付けます。 たとえば、C:\JSON\maintemplate.json を使用します。

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. そのファイルをローカルに保存した後、PowerShell コマンドを使用して、前のユニットで説明したリソース グループ レベルでそれをデプロイできます。 つまり、New-AzResourceGroupDeployment コマンドを使用します。

    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-"+"$today"
    
    New-AzResourceGroupDeployment `
    -Name $DeploymentName `
    -TemplateFile $templateFile
    

    完了したら、結果は次の例のようになります。

    DeploymentName          : DeployLocalTemplate-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:50:04 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

パラメーター値を使用して同じローカル テンプレートをデプロイする

前の演習では、パラメーターの既定値を使用してテンプレートをデプロイしました。 ローカルの ARM テンプレートをデプロイする場合は、パラメーター値を渡すことが必要になる可能性があります。 インライン パラメーターまたはパラメーター ファイルのいずれかを使用できます。

インライン パラメーターをデプロイに渡すには、New-AzResourceGroupDeployment コマンドレットを使用してパラメーターの名前を指定する必要があります。 次の演習では、パラメーターをインライン パラメーターおよびパラメーター ファイルとして渡します。

  1. 前の演習と同じテンプレートを使用して、必要なテンプレート パラメーターの値を含むハッシュ テーブルを作成します。

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-2-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterObject $parameters
    

    完了したら、結果は次のようになります。

    DeploymentName          : DeployLocalTemplate-2-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:51:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

    スクリプトでパラメーターをインラインとして渡すのではなく、パラメーター値を含む JSON ファイルを使用する方が簡単な場合があります。 パラメーター ファイルは、ローカル ファイルでも、アクセス可能な URI を持つ外部またはリモート ファイルでもかまいません。 パラメーター ファイルの詳細については、「Resource Manager パラメーター ファイルを作成する」を参照してください。

  2. ローカル パラメーター ファイルを渡すには、使用していた同じコマンドで TemplateParameterFile パラメーターを使用します。 ただし、最初に、パラメーター ファイルを作成して保存する必要があります。

    1. Visual Studio Code と Azure Resource Manager ツール拡張機能を使用しているため、ローカルで保存した ARM テンプレートを開き、[パラメーター ファイルの選択/作成...] リンクを選択できます。

    2. メニューで [新規] を選択し、[必須パラメーターのみ] を選択します。 拡張機能により、現在開いているテンプレートに基づいてパラメーター ファイルが作成されます。

    Visual Studio Code でパラメーター ファイルを作成するための選択項目を示すスクリーンショット。

  3. TemplateParameterFile パラメーターを含む次の PowerShell コマンドを使用します。

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-3-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterFile $TemplateParameterFile
    

    デプロイ後、結果は次の例のようになります。

    DeploymentName          : DeployLocalTemplate-3-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:54:40 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

外部またはリモートのテンプレートをデプロイする

場合によっては、ローカル コンピューターのテンプレートからではなく、外部またはリモートの場所からデプロイする必要があります。 ソース管理リポジトリ (GitHub など) にテンプレートを格納できます。 または、組織内の共有アクセス用の Azure ストレージ アカウントに格納することができます。

  1. 外部テンプレートをデプロイするには、TemplateUri パラメーターを使用します。

    次の演習では、GitHub リポジトリから ARM テンプレートをデプロイします。 リポジトリはパブリックであるため、Shared Access Signature (SAS) トークンを必要とするテンプレートのデプロイについて心配する必要はありません。 プライベートまたはセキュリティで保護されたリモートの場所を使用する方法の詳細については、SAS トークンを使用したプライベート テンプレートのデプロイに関するページを参照してください。

    演習用のテンプレート URI は、https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json です。 これは、サンドボックス環境に基本的なストレージ アカウントをデプロイする短いテンプレートです。

  2. PowerShell コマンドは、ローカル テンプレートの場合とまったく同じです。 唯一の違いは、-TemplateUri パラメーターの代わりに -TemplateFile パラメーターを使用する点です。

    次のコードを使用して、指定されたサンドボックスにデプロイします。

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-4-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    結果は、次の画面キャプチャのようになります。 テンプレートの場所の詳細も説明されています。

    DeploymentName          : DeployLocalTemplate-4-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:56:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
                              Uri            :
                              https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountType    String                     Standard_LRS
                              location              String                     westus
    
    Outputs                 :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountName    String                     storepgxosadmbq77e
    
    DeploymentDebugLogLevel :
    
    

Note

このセクションは、Windows 10 上の Linux 用 Windows Subsystem (WSL2) で Azure CLI コマンドを使用して作成されました。 Azure CLI を PowerShell、CMD、または Bash シェルのいずれで使用するかにかかわらず、コマンドは同じです。 しかし、変数のアドレス指定方法は異なる場合があります。

Azure にサインインする

  1. Visual Studio Code のターミナルから次のコマンドを実行して、Azure にサインインします。 このコマンドを実行すると、ブラウザーが開き、アカウントにサインインできます。

    az login
    
  2. サインインすると、このアカウントに関連付けられているサブスクリプションの JSON リストがターミナルに表示されます。 サンドボックスをアクティブにしている場合、このリストにコンシェルジェ サブスクリプションが含まれています。

  3. サブスクリプション ID を取得します。 次のコマンドを実行すると、ご使用のサブスクリプションとその ID が一覧表示されます。 サブスクリプション ID は 3 番目の列です。 Concierge Subscription を探し、3 番目の列をコピーします。 それは aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e のようになります。

    az account list -o table
    
  4. アクティブなサブスクリプションをコンシェルジェ サブスクリプションに変更します。 必ず、{Your subscription ID} を、前のコマンドで取得したコンシェルジェ サブスクリプションの ID に置き換えてください。

    az account set -s {Your subscription ID}
    

既定のリソース グループを設定する

次に、サンドボックスで自分用に作成したリソース グループを、既定のリソース グループとして設定する必要があります。 この操作を実行するには、最初に、次のコマンドを使用してリソース グループを取得する必要があります。

az group list -o table

このコマンドでは、前のコマンドから取得したリソースの名前を使用します (これは、learn-a73131a1-b618-48b8-af70-21af7ca420c4 のように表示されます)。このコマンドを使用することにより、この演習の残りの Azure CLI コマンドでそのパラメーターを省略できます。

Note

通常、Azure CLI コマンドを使用してテンプレートをデプロイするときは、ターゲットの "リソース グループ" 名を指定する必要があります。 このモジュールの演習では、デプロイのコンテキストを設定すると、この要件をバイパスしています。 次の手順では、Azure CLI コマンド az configure を使用してサンドボックスのリソース グループ名を指定しています。

az configure --defaults group={Resource Group Name}

ローカル テンプレートをデプロイする

次の演習では、ローカル コンピューターからテンプレートをデプロイします。 前のセクションで既定のリソース グループを既に定義したので、独自の環境でデプロイする場合に通常使用するリソース グループの名前は、ここでは必要ありません。

  1. 作業を開始するには、次のテンプレート コードの内容をコピーして、ローカル ディレクトリ内のファイルに貼り付けます。 たとえば、C:\JSON\maintemplate.json または /mnt/c/Users/you/json/maintemplate.json を使用します。

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. ファイルをローカルに保存した後、Azure CLI コマンドを使用して、前のユニットで説明したリソース グループ レベルでそれをデプロイできます。 つまり、az deployment group create を使用します。

    Note

    次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) のホーム ドライブの json フォルダー内にあります。 選択したシェルに基づいてコマンドを調整します。

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-"$today
    
    az deployment group create \
      --name $deploymentname \
      --template-file $templateFile
    

    完了すると、次の例のような結果が出力されます。 デプロイが成功したことを確実にするには、"provisioningState": "Succeeded" 行を探します。

    {
      "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-2020-08-19",
      "properties": {
        "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT8.9060761S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/    learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001",
            "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
          }
        ],
        "outputs": null,
        "parameters": {
          "costCenterIO": {
            "type": "String",
            "value": "12345"
          },
          "ownerName": {
            "type": "String",
            "value": "John Smith"
          },
          "vnetName": {
            "type": "String",
            "value": "VNet-001"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Network",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "virtualNetworks"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "11553431046699679955",
        "templateLink": null,
        "timestamp": "2020-08-19T14:47:06.403362+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    

パラメーター値を使用して同じローカル テンプレートをデプロイする

前の演習では、パラメーターの既定値を使用してテンプレートをデプロイしました。 ローカルの ARM テンプレートをデプロイする場合は、パラメーター値を渡すことが必要になる可能性があります。 インライン パラメーターまたはパラメーター ファイルのいずれかを使用できます。

次の演習では、インライン パラメーターをデプロイに渡します。 az deployment group create コマンドを使用して、インライン パラメーターとパラメーター ファイルのどちらを使用しているかに関係なく、パラメーターの名前を指定する必要があります。

  1. 前の演習と同じテンプレートを使用して、必要なテンプレート パラメーターのパラメーターを JSON 文字列形式で格納する変数を作成します。

    Note

    次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) の json フォルダー内にあります。 選択したシェルおよび OS に基づいてコマンドを調整します。

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-2-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters "$parameters"
    

    完了したら、結果は次の例のようになります。 コマンドが正常に実行されたことを確認するには、"parameters" セクションと "provisioningState" 値を参照してください。

      {- Finished ..
        "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19",      
        "location": null,
        "name": "DeployLocalTemplate-2-2020-08-19",
        "properties": {
          "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.6990388S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T16:40:20.249786+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

    スクリプトでパラメーターをインラインとして渡すのではなく、パラメーター値を含む JSON ファイルを使用する方が簡単な場合があります。 パラメーター ファイルは、ローカル ファイルでも、アクセス可能な URI を持つ外部またはリモート ファイルでもかまいません。 パラメーター ファイルの詳細については、「Resource Manager パラメーター ファイルを作成する」を参照してください。

  2. ローカル パラメーター ファイルを渡すには、使用していた同じコマンドで --parameters パラメーターを使用します。 ただし、最初に、パラメーター ファイルを作成して保存する必要があります。

    1. Visual Studio Code と Azure Resource Manager (ARM) ツール拡張機能を使用しているため、ローカルで保存した ARM テンプレートを開き、Select or create a parameter file to enable full validation (完全な検証を有効にするためにパラメーター ファイルを選択または作成する) リンクを選択できます。

    2. メニューで [新規] をクリックします。 拡張機能により、現在開いているテンプレートに基づいてパラメーター ファイルが作成されます。

    Visual Studio Code でパラメーター ファイルを作成するための選択項目を示すスクリーンショット。

  3. --parameters パラメーターを含む次の Azure CLI コマンドを使用します。

    Note

    次の例のテンプレート ファイルは、Linux 用 Windows Subsystem (WSL2) の json フォルダー内にあります。 選択したシェルおよび OS に基づいてコマンドを調整します。

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-3-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters $templateparameterfile
    

    デプロイ後、結果は次の例のようになります。

      {- Finished ..
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
        "location": null,
        "name": "DeployLocalTemplate-3-2020-08-19",
        "properties": {
          "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.2058912S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T20:42:44.069215+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

外部またはリモートのテンプレートをデプロイする

場合によっては、ローカル コンピューターのテンプレートからではなく、外部またはリモートの場所からデプロイする必要があります。 ソース管理リポジトリ (GitHub など) にテンプレートを格納できます。 または、組織内の共有アクセス用の Azure ストレージ アカウントに格納することができます。

  1. 外部テンプレートをデプロイするには、--template-uri パラメーターを使用します。

この演習では、GitHub リポジトリから ARM テンプレートをデプロイします。 リポジトリはパブリックであるため、Shared Access Signature (SAS) トークンを必要とするテンプレートのデプロイについて心配する必要はありません。 プライベートまたはセキュリティで保護されたリモートの場所を使用する方法の詳細については、SAS トークンを使用したプライベート テンプレートのデプロイに関するページを参照してください。

演習用のテンプレート URI は、https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json です。 これは、サンドボックス環境に基本的なストレージ アカウントをデプロイする短いテンプレートです。

  1. Azure CLI コマンドは、ローカル テンプレートの場合とまったく同じです。 唯一の違いは、--template-uri パラメーターの代わりに --template-file パラメーターを使用する点です。

  2. 次のコードを使用して、指定されたサンドボックスにデプロイします。

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-4-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    結果は、次のコード ブロックのようになります。 "templateLink" セクションでは、テンプレートの場所の詳細が説明されています。 また、"provisioningState" セクションでは、デプロイが成功したかどうかが示されています。

    {- Finished ..
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-4-2020-08-19",
      "properties": {
        "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT24.3286124S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b"
          }
        ],
        "outputs": {
          "storageAccountName": {
            "type": "String",
            "value": "store7zk7eyqew54l4"
          }
        },
        "parameters": {
          "location": {
            "type": "String",
            "value": "westus"
          },
          "storageAccountType": {
            "type": "String",
            "value": "Standard_LRS"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Storage",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "storageAccounts"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "12600309984865991765",
        "templateLink": {
          "contentVersion": "1.0.0.0",
          "id": null,
          "relativePath": null,
          "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json"
        },
        "timestamp": "2020-08-19T20:53:36.759312+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }