Alıştırma - Azure Resource Manager şablonunuza parametreler ve çıktılar ekleme

Tamamlandı

Bu alıştırmada, dağıtım sırasında Azure depolama hesabı adını tanımlamak için bir parametre ekleyeceksiniz. Ardından hangi depolama hesabı SKU'larına izin verilip bu dağıtım için hangisinin kullanılacağını tanımlamak için bir parametre ekleyeceksiniz. Ayrıca, dağıtım işleminin ilerleyen bölümlerinde kullanabileceğiniz bir çıkış ekleyerek Azure Resource Manager şablonuna (ARM şablonu) kullanışlılık da ekleyeceksiniz.

ARM şablonu için parametreler oluşturma

Burada, çalışma zamanında ayarlanabilen parametreler ekleyerek ARM şablonunuzu daha esnek hale getireceksiniz. storageName değeri için bir parametre oluşturun.

  1. Visual Studio Code'daki azuredeploy.json dosyasında, imlecinizi parameters özniteliğindeki küme ayraçlarının içine yerleştirin. Şuna benzer: "parameters":{},

  2. Enter tuşunu kullanın ve sonra par girin. İlgili kod parçacıklarının listesini görürsünüz. Şablona genel bir parametre ekleyen new-parameter öğesini seçin. Şunun gibi görünür:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. parametresini parameter1olan değerini storageName olarak değiştirin ve türünü dize olarak bırakın. minLength değeri olarak 3 ve maxLength değeri olarak da 24 ekleyin. The name of the Azure storage resource (Azure depolama kaynağının adı) açıklamasını ekleyin.

  4. Parametre bloğu şu şekilde görünmelidir:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Hem name hem de displayName değerlerinde resources bloğundaki yeni parametreyi kullanın. Dosyanın tamamı şu şekilde görünür:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[parameters('storageName')]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS",
            "tier": "Standard"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Dosyayı kaydedin.

Parametreli ARM şablonunu dağıtma

Burada, bu dağıtımın ne yaptığını daha iyi yansıtacak ve yeni parametre için bir değer dolduracak şekilde dağıtımın adını değiştireceksiniz.

Terminalde aşağıdaki Azure CLI komutlarını çalıştırın. Bu kod parçacığı daha önce kullandığınız kodla aynıdır ama dağıtımın adı değişmiştir. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son ünitede oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storageName={your-unique-name}

Terminalde aşağıdaki Azure PowerShell komutlarını çalıştırın. Bu kod parçacığı daha önce kullandığınız kodla aynıdır ama dağıtımın adı değişmiştir. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son ünitede oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storageName {your-unique-name}

Dağıtımınızı denetleme

  1. Dağıtım tamamlandığında tarayıcınızda Azure portalına geri dönün. Kaynak grubunuza gidin ve şimdi 3 Başarılı dağıtım olduğunu görün. Bu bağlantıyı seçin.

    Üç dağıtımın da listede olduğuna dikkat edin.

  2. Daha önce yaptığınız gibi addnameparameter dağıtımını inceleyin.

İzin verilen değerleri sınırlandırmak için başka bir parametre ekleme

Burada, parametre için izin verilen değerleri sınırlamak için parametreleri kullanacaksınız.

  1. İmlecinizi storageName parametresinin kapanış ayracının arkasına yerleştirin. Bir virgül ekleyin ve Enter tuşuna basın.

  2. Yeniden par yazın ve new-parameter öğesini seçin.

  3. Yeni genel parametreyi aşağıdaki şekilde değiştirin:

    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    Burada, bu parametrenin izin vereceği değerleri listeliyorsunuz. Şablon izin verilmeyen bir değerle çalıştırılırsa dağıtım başarısız olur.

  4. Bu parametreye bir açıklama ekleyin.

    Screenshot of the azuredeploy.json file showing the comment This is the allowed values for an Azure storage account in the line preceding the storageSKU parameter.

    ARM şablonları // ve /* */ açıklamalarını destekler.

  5. storageSKU parametresini kullanmak için resources bölümünü güncelleştirin. Bu adımı kolaylaştırmak için Visual Studio Code’da IntelliSense’den yararlanın.

    "sku": {
         "name": "[parameters('storageSKU')]"
       }
    

    Dosyanın tamamı şu şekilde görünür:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        },
        "storageSKU": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_RAGRS",
            "Standard_ZRS",
            "Premium_LRS",
            "Premium_ZRS",
            "Standard_GZRS",
            "Standard_RAGZRS"
          ]
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[parameters('storageName')]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]",
            "tier": "Standard"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Dosyayı kaydedin.

ARM şablonunu dağıtma

Burada, izin verilenler listesinde yer alan bir storageSKU parametreyi kullanarak başarıyla dağıtacaksınız. Ardından, izin verilenler listesinde olmayan bir storageSKU parametre kullanarak şablonu dağıtmayı deneyeceksiniz. İkinci dağıtım beklendiği gibi başarısız olacaktır.

  1. Şablonu dağıtmak için aşağıdaki komutları çalıştırın. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_GRS storageName={your-unique-name}
    

    Bu dağıtımın bitmesini bekleyin. Bu dağıtım beklendiği gibi başarılı olur. İzin verilen değerler, şablonunuzun kullanıcılarının kaynak için çalışmayan parametre değerlerini geçirmesini engeller. Geçersiz bir SKU sağladığınızda ne olacağını görelim.

  2. Şablonu izin verilmeyen bir parametreyle dağıtmak için aşağıdaki komutları çalıştırın. Burada storageSKU parametresini Basic olarak değiştirdiniz. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Basic storageName={your-unique-name}
    

    Bu dağıtım başarısız olur. Hataya dikkat edin.

    Screenshot of the Terminal window showing the deployment validation error.

  1. Şablonu dağıtmak için aşağıdaki komutları çalıştırın. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_GRS
    

    Bu dağıtımın bitmesini bekleyin. Bu dağıtım beklendiği gibi başarılı olur. İzin verilen değerler, şablonunuzun kullanıcılarının kaynak için çalışmayan parametre değerlerini geçirmesini engeller. Geçersiz bir SKU sağladığınızda ne olacağını görelim.

  2. Şablonu izin verilmeyen bir parametreyle dağıtmak için aşağıdaki komutları çalıştırın. Burada storageSKU parametresini Basic olarak değiştirdiniz. storageName parametresi için benzersiz bir ad girin. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Basic
    

    Bu dağıtım başarısız olur. Hataya dikkat edin.

    Screenshot of the Terminal window showing the deployment validation error.

ARM şablonuna çıkış ekleme

Burada, depolama hesabı kaynağının outputs uç noktalarının çıkışını almak için ARM şablonunun bölümüne ekleyeceksiniz.

  1. Visual Studio Code'daki azuredeploy.json dosyasında imlecinizi outputs özniteliğindeki "outputs":{},küme ayraçlarının içine yerleştirin.

  2. Enter tuşuna basın ve ardından girin. İlgili kod parçacıklarının listesini alırsınız. Yeni çıkış'ı seçin. Bu seçim şablona genel bir çıkış ekler. Şu şekilde görünür:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. "output1" değerini "storageEndpoint" olarak değiştirin ve değerini "object" olarak değiştirin.type değerini value"[reference(parameters('storageName')).primaryEndpoints]" olarak değiştirin. Bu ifade, önceki ünitede açıklanan ve uç nokta verilerini alan ifadedir. Nesne türü olarak belirttiğimiz için nesne JSON biçiminde döndürülecektir.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    
  4. Dosyayı kaydedin.

ARM şablonunu çıktı ile dağıtma

Burada şablonu dağıtacak ve uç noktaların çıkışını JSON olarak göreceksiniz. storageName parametresi için benzersiz bir ad girmeniz gerekir. Bu adın Azure genelinde benzersiz olması gerektiğini unutmayın. Son bölümde oluşturduğunuz benzersiz adı kullanabilirsiniz. Bu durumda Azure, yeni bir kaynak oluşturmak yerine, kaynağı güncelleştirir.

  1. Şablonu dağıtmak için aşağıdaki komutları çalıştırın. {your-unique-name} öğesini, size özel olan benzersiz bir dizeyle değiştirdiğinizden emin olun.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addoutputs-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_LRS storageName={your-unique-name}
    

    Çıktıya dikkat edin.

    Screenshot of the Terminal window showing the primary endpoints output as JSON.

  1. Şablonu dağıtmak için aşağıdaki komutları çalıştırın. {your-unique-name} öğesini, size özel olan benzersiz bir dizeyle değiştirdiğinizden emin olun.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addOutputs-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_LRS
    

    Çıktıya dikkat edin.

    Screenshot of the Terminal window showing the primary endpoints output as JSON.

Çıktı dağıtımınızı denetleme

Azure portalında addOutputs dağıtımına gidin. Çıktıyı burada da bulabilirsiniz.

Screenshot of the Azure portal showing the output selection in the left menu.