チュートリアル: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.

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

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

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

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. テンプレート全体で variables('storageAccountName')parameters('storageAccountName') に置き換えます。Replace variables('storageAccountName') with parameters('storageAccountName') in the whole template. variables('storageAccountName') は 3 か所で使用されています。There are three appearances of variables('storageAccountName').

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

    "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
  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 storageUri 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

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. インストール手順については、Azure PowerShell のインストール を参照してください。For installation instructions, see Install Azure PowerShell.

テンプレートをデプロイするの指示に従って、テンプレートをデプロイします。Follow the instructions in Deploy the template to deploy the template.

Azure PowerShell を使用してテンプレートをデプロイする場合、1 つの追加パラメーターを指定する必要があります。When you deploy the template using Azure PowerShell, you need to specify one additional parameter. セキュリティを向上させるには、生成されたパスワードを仮想マシンの管理者アカウントに対して使用します。To increase security, use a generated password for the virtual machine administrator account. 前提条件」を参照してください。See Prerequisites.

$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.

  1. Azure portal で、左側のメニューから [リソース グループ] を選択します。From the Azure portal, select Resource group from the left menu.
  2. [名前でフィルター] フィールドに、リソース グループ名を入力します。Enter the resource group name in the Filter by name field.
  3. リソース グループ名を選択します。Select the resource group name. リソース グループ内の合計 6 つのリソースが表示されます。You shall see a total of six resources in the resource group.
  4. トップ メニューから [リソース グループの削除] を選択します。Select Delete resource group from the top menu.

次の手順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: