チュートリアル:Azure Resource Manager テンプレートでの条件の使用Tutorial: Use condition in Azure Resource Manager templates

条件に基づいて Azure リソースをデプロイする方法について説明します。Learn how to deploy Azure resources based on conditions.

リソースのデプロイ順序の設定に関するチュートリアルでは、仮想マシン、仮想ネットワーク、およびその他の依存リソース (ストレージ アカウントなど) を作成します。In the Set resource deployment order tutorial, you create a virtual machine, a virtual network, and some other dependent resources including a storage account. 新しいストレージ アカウントを毎回作成する代わりに、新しいストレージ アカウントを作成するか、既存のストレージ アカウントを使用するかをユーザーに選択してもらいます。Instead of creating a new storage account every time, you let people choose between creating a new storage account and using an existing storage account. この目的を達成するために、追加のパラメーターを定義します。To accomplish this goal, you define an additional parameter. パラメーターの値に "new" が指定されると、新しいストレージ アカウントが作成されます。If the value of the parameter is "new", a new storage account is created. それ以外の場合、名前が指定された既存のストレージ アカウントが使用されます。Otherwise, an existing storage account with the name provided is used.

条件を使用する Resource Manager テンプレートの図

このチュートリアルに含まれるタスクは次のとおりです。This tutorial covers the following tasks:

  • クイック スタート テンプレートを開くOpen a QuickStart template
  • テンプレートの変更Modify the template
  • テンプレートのデプロイDeploy the template
  • リソースのクリーンアップClean up resources

このチュートリアルでは、条件を使用する基本的なシナリオについてのみ説明します。This tutorial only covers a basic scenario of using conditions. 詳細については、次を参照してください。For more information, see:

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

この記事を完了するには、以下が必要です。To complete this article, you need:

クイック スタート テンプレートを開くOpen a Quickstart template

Azure クイック スタート テンプレートは、Resource Manager テンプレートのリポジトリです。Azure QuickStart Templates is a repository for Resource Manager templates. テンプレートを最初から作成しなくても、サンプル テンプレートを探してカスタマイズすることができます。Instead of creating a template from scratch, you can find a sample template and customize it. このチュートリアルで使用するテンプレートは、「Deploy a simple Windows VM」(単純な Windows VM をデプロイする) と呼ばれます。The template used in this tutorial is called Deploy a simple Windows VM.

  1. Visual Studio Code から、 [ファイル] > [ファイルを開く] を選択します。From Visual Studio Code, select File>Open File.

  2. [ファイル名] に以下の URL を貼り付けます。In File name, paste the following URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.json
    
  3. [開く] を選択して、ファイルを開きます。Select Open to open the file.

  4. テンプレートによって定義されたリソースは、5 つあります。There are five resources defined by the template:

  5. [ファイル] > [Save As](名前を付けて保存) を選択し、このファイルのコピーを azuredeploy.json という名前でローカル コンピューターに保存します。Select File>Save As to save a copy of the file to your local computer with the name azuredeploy.json.

テンプレートの変更Modify the template

既存のテンプレートに 2 つの変更を加えます。Make two changes to the existing template:

  • ストレージ アカウント名パラメーターを追加します。Add a storage account name parameter. ユーザーは、新しいストレージ アカウント名を指定するか、または既存のストレージ アカウント名を指定することができます。Users can specify either a new storage account name or an existing storage account name.
  • newOrExisting という新しいパラメーターを追加します。Add a new parameter called newOrExisting. デプロイする際には、このパラメーターを使用して、新しいストレージ アカウントを作成する、または既存のストレージ アカウントを使用する場所が判別されます。The deployment uses this parameter to determine where to create a new storage account or use an existing storage account.

変更を行う手順は次のとおりです。Here is the procedure to make the changes:

  1. Visual Studio Code で azuredeploy.json を開きます。Open azuredeploy.json in Visual Studio Code.

  2. テンプレート全体で 3 つの variables('storageAccountName')parameters('storageAccountName') に置き換えます。Replace the three variables('storageAccountName') with parameters('storageAccountName') in the whole template.

  3. 次の変数定義を削除します。Remove the following variable definition:

    条件を使用する Resource Manager テンプレートの図

  4. 次の 2 つのパラメーターをテンプレートに追加します。Add the following two parameters to the template:

    "storageAccountName": {
      "type": "string"
    },
    "newOrExisting": {
      "type": "string",
      "allowedValues": [
        "new",
        "existing"
      ]
    },
    

    更新したパラメーター定義は次のようになります。The updated parameters definition looks like:

    Resource Manager での条件の使用

  5. ストレージ アカウント定義の先頭に次の行を追加します。Add the following line to the beginning of the storage account definition.

    "condition": "[equals(parameters('newOrExisting'),'new')]",
    

    この条件では、newOrExisting というパラメーターの値が確認されます。The condition checks the value of a parameter called newOrExisting. パラメーターの値に new が指定されていると、ストレージ アカウントが作成されます。If the parameter value is new, the deployment creates the storage account.

    更新したストレージ アカウント定義は次のようになります。The updated storage account definition looks like:

    Resource Manager での条件の使用

  6. 仮想マシンのリソース定義の storageUri プロパティを次の値に更新します。Update the storageUri property of the virtual machine resource definition with the following value:

    "storageUri": "[concat('https://', parameters('storageAccountName'), '.blob.core.windows.net')]"
    

    この変更は、異なるリソース グループの既存のストレージ アカウントを使用するときに必要になります。This change is necessary when you use an existing storage account under a different resource group.

  7. 変更を保存します。Save the changes.

テンプレートのデプロイDeploy the template

テンプレートのデプロイの手順に従って Cloud シェルを開き、変更後のテンプレートをアップロードしてから、次の PowerShell スクリプトを実行してテンプレートをデプロイします。Follow the instructions in Deploy the template to open the Cloud shell and upload the revised template, and then run the follow PowerShell script to deploy the template.

$resourceGroupName = Read-Host -Prompt "Enter the resource group name"
$storageAccountName = Read-Host -Prompt "Enter the storage account name"
$newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)"
$location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)"
$vmAdmin = Read-Host -Prompt "Enter the admin username"
$vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString
$dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -adminUsername $vmAdmin `
    -adminPassword $vmPassword `
    -dnsLabelPrefix $dnsLabelPrefix `
    -storageAccountName $storageAccountName `
    -newOrExisting $newOrExisting `
    -TemplateFile "$HOME/azuredeploy.json"

注意

newOrExistingnew のときに、指定したストレージ アカウント名のストレージ アカウントが既に存在している場合、デプロイは失敗します。The deployment fails if newOrExisting is new, but the storage account with the storage account name specified already exists.

newOrExisting を "existing" に設定した別のデプロイを作成して、既存のストレージ アカウントを指定します。Try making another deployment with newOrExisting set to "existing" and specify an exiting storage account. 事前にストレージ アカウントを作成する場合は、「ストレージ アカウントの作成」を参照してください。To create a storage account beforehand, see Create a storage account.

リソースのクリーンアップClean up resources

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group. リソース グループを削除するには、 [Try it]/(試してみる/) を選択し Cloud シェル を開きます。To delete the resource group, select Try it to open the Cloud shell. PowerShell スクリプトを貼り付けるには、シェル ウィンドウを右クリックし、 [貼り付け] を選択します。To paste the PowerShell script, right-click the shell pane, and then select Paste.

$resourceGroupName = Read-Host -Prompt "Enter the same resource group name you used in the last procedure"
Remove-AzResourceGroup -Name $resourceGroupName

次の手順Next steps

このチュートリアルでは、新しいストレージ アカウントを作成するか、既存のストレージ アカウントを使用するかをユーザーが選択できるテンプレートを作成しました。In this tutorial, you developed a template that allows users to choose between creating a new storage account and using an existing storage account. Azure Key Vault からシークレットを取得し、テンプレートのデプロイでそのシークレットをパスワードとして使用する方法については、以下を参照してください。To learn how to retrieve secrets from Azure Key Vault, and use the secrets as passwords in the template deployment, see: