Cvičení – přidání parametrů a výstupů do šablony Azure Resource Manageru

Dokončeno

V tomto cvičení přidáte parametr pro definování názvu účtu úložiště Azure během nasazování. Pak přidáte parametr, který definuje, jaké skladové položky účtu úložiště jsou povolené, a definujete, který z nich se má použít pro toto nasazení. Do šablony Azure Resource Manageru (šablony ARM) přidáte také užitečný výstup, který můžete použít později v procesu nasazení.

Vytvoření parametrů pro šablonu ARM

Tady nastavíte šablonu ARM flexibilněji přidáním parametrů, které je možné nastavit za běhu. Vytvoříte parametr pro hodnotu storageName.

  1. V souboru azuredeploy.json v editoru Visual Studio Code umístěte kurzor do složených závorek v atributu parametrů. Vypadá takto: "parameters":{},

  2. Stiskněte Enter a zadejte par. Zobrazí se seznam souvisejících fragmentů. Zvolte nový parametr, který do šablony přidá obecný parametr. Vypadá takto:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Změňte parametr z parametru1 na storageName a ponechte typ jako řetězec. Přidejte hodnotu minLength3 a maxLength24. Přidejte hodnotu popisu Název prostředku Azure Storage.

  4. Blok parametru by měl vypadat takto:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Použijte nový parametr v bloku resources pro hodnotu name i displayName. Celý soubor bude vypadat takto:

    {
      "$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. Soubor uložte.

Nasazení parametrizované šablony ARM

Tady změníte název nasazení tak, aby lépe odpovídal tomu, co toto nasazení dělá, a vyplníte hodnotu nového parametru.

V terminálu spusťte následující příkazy Azure CLI. Tento fragment kódu je stejný, jaký jste použili už dříve. Změnil se však název nasazení. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední lekci. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

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}

V terminálu spusťte následující příkazy Azure PowerShellu. Tento fragment kódu je stejný, jaký jste použili už dříve. Změnil se však název nasazení. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední lekci. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

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

Kontrola nasazení

  1. Po dokončení nasazení se vraťte do webu Azure Portal v prohlížeči. Přejděte do skupiny prostředků a podívejte se, že teď existují 3 úspěšná nasazení. Vyberte tento odkaz.

    Všimněte si, že seznam zahrnuje všechna tři nasazení.

  2. Stejně jako dříve si podrobně prohlédněte nasazení addnameparameter.

Přidání dalšího parametru pro omezení povolených hodnot

Tady použijete parametry k omezení hodnot povolených pro parametr.

  1. Umístěte kurzor za pravou složenou závorku parametru storageName. Přidejte čárku a stiskněte Enter.

  2. Znovu zadejte par a vyberte nový parametr.

  3. Změňte nový obecný parametr na následující:

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

    Tady uvádíte hodnoty, které daný parametr povolí. Pokud se šablona spustí s hodnotou, která povolená není, nasazení se nepovede.

  4. Přidejte k parametru komentář.

    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.

    Šablony ARM podporují komentáře // a /* */.

  5. Aktualizujte oddíl resources, aby používal parametr storageSKU. Usnadněte si tento krok tím, že využijete IntelliSense v editoru Visual Studio Code.

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

    Celý soubor bude vypadat takto:

    {
      "$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. Soubor uložte.

Nasazení šablony ARM

Tady úspěšně nasadíte pomocí parametru storageSKU , který je v seznamu povolených. Pak se pokusíte nasadit šablonu pomocí storageSKU parametru, který není v seznamu povolených. Druhé nasazení se podle očekávání nepovede.

  1. Spusťte následující příkazy pro nasazení šablony. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

    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}
    

    Nechte nasazení dokončit. Toto nasazení se podle očekávání úspěšně povede. Povolené hodnoty brání uživatelům šablony předávat hodnoty parametrů, které pro prostředek nefungují. Pojďme se podívat, co se stane, když zadáte neplatnou jednotku SKU.

  2. Spusťte následující příkazy pro nasazení šablony s parametrem, který není povolený. Tady jste změnili parametr storageSKU na hodnotu Basic. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

    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}
    

    Toto nasazení se nepovede. Podívejte se na související chybu.

    Screenshot of the Terminal window showing the deployment validation error.

  1. Spusťte následující příkazy pro nasazení šablony. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

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

    Nechte nasazení dokončit. Toto nasazení se podle očekávání úspěšně povede. Povolené hodnoty brání uživatelům šablony předávat hodnoty parametrů, které pro prostředek nefungují. Pojďme se podívat, co se stane, když zadáte neplatnou jednotku SKU.

  2. Spusťte následující příkazy pro nasazení šablony s parametrem, který není povolený. Tady jste změnili parametr storageSKU na hodnotu Basic. Vyplňte pro parametr storageName jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

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

    Toto nasazení se nepovede. Podívejte se na související chybu.

    Screenshot of the Terminal window showing the deployment validation error.

Přidání výstupu do šablony ARM

Tady přidáte do outputs části šablony ARM výstup koncových bodů pro prostředek účtu úložiště.

  1. V souboru azuredeploy.json v editoru Visual Studio Code umístěte kurzor do složených závorek v atributu "outputs":{},outputs .

  2. Stiskněte Enter a zadejte ho. Zobrazí se seznam souvisejících fragmentů kódu. Vyberte nový výstup. Tím se do šablony přidá generický výstup. Bude vypadat takto:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Změňte "output1" na "storageEndpoint" a pak změňte hodnotu type na "object". Změňte hodnotu value na [reference(parameters('storageName')).primaryEndpoints]. Tento výraz je ten, který jsme popsali v předchozí lekci, která získá data koncového bodu. Protože jsme jako typ zadali objekt , vrátí objekt ve formátu JSON.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    
  4. Soubor uložte.

Nasazení šablony ARM s výstupem

Tady šablonu nasadíte a zobrazí se výstup koncových bodů jako JSON. Pro parametr storageName musíte vyplnit jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.

  1. Spusťte následující příkazy pro nasazení šablony. Nezapomeňte nahradit {váš-jedinečný-název} jedinečným řetězcem.

    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}
    

    Podívejte se na výstup.

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

  1. Spusťte následující příkazy pro nasazení šablony. Nezapomeňte nahradit {váš-jedinečný-název} jedinečným řetězcem.

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

    Podívejte se na výstup.

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

Kontrola nasazení výstupu

Na webu Azure Portal přejděte ke svému nasazení addOutputs. Najdete tam i svůj výstup.

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