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. Pak přidáte parametr, který definuje, které 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) také přidáte užitečný výstup, který můžete použít později v procesu nasazení.

Vytvoření parametrů pro šablonu ARM

V této části zlepšíte flexibilitu šablony ARM přidáním parametrů, které se dají nastavit při spuštění. 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 parameters. 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á to jako v tomto příkladu:

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

  4. Blok parametrů by teď měl vypadat jako v tomto příkladu:

    "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 vypadá jako v tomto příkladu kódu:

    {
      "$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": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Uložte soubor.

Nasazení parametrizované šablony ARM

V této části změníte název nasazení, aby lépe odpovídal účelu nasazení, a vyplníte hodnotu pro nový parametr.

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 aktualizuje prostředek místo vytvoření nového prostředku.

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 aktualizuje prostředek místo vytvoření nového prostředku.

$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, který omezuje povolené hodnoty

V této části pomocí parametrů omezíte hodnoty povolené pro určitý 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í kód:

    "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é tento parametr umožňuje. Pokud se šablona spustí s hodnotou, která není povolená, nasazení selže.

  4. Přidejte k parametru komentář.

    Snímek obrazovky se souborem azuredeploy.json s komentářem: Toto jsou povolené hodnoty pro účet úložiště Azure na řádku před parametrem storageSKU.

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

  5. Aktualizujte oddíl resources, aby používal parametr storageSKU. Pokud v editoru Visual Studio Code využijete IntelliSense, usnadníte si tento krok.

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

    Celý soubor vypadá jako v tomto příkladu kódu:

    {
      "$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": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Uložte soubor.

Nasazení šablony ARM

Tady nasazení proběhne úspěšně díky tomu, že používáte parametr storageSKU, který se nachází na seznamu povolených parametrů. Pak se pokusíte nasadit šablonu pomocí parametru storageSKU , který není v seznamu povolených. Druhé nasazení selže podle očekávání.

  1. Nasaďte šablonu spuštěním následujících příkazů. 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 aktualizuje prostředek místo vytvoření nového prostředku.

    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. Seznam povolených hodnot zabrá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 aktualizuje prostředek místo vytvoření nového prostředku.

    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.

    Snímek obrazovky okna terminálu s chybou ověření nasazení

  1. Nasaďte šablonu spuštěním následujících příkazů. 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 aktualizuje prostředek místo vytvoření nového prostředku.

    $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. Seznam povolených hodnot zabrá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 aktualizuje prostředek místo vytvoření nového prostředku.

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

    Snímek obrazovky okna terminálu s chybou ověření nasazení

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

V této části přidáte do oddílu outputs š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. Do šablony přidá obecný výstup, který vypadá jako v tomto příkladu:

    "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. Uložte soubor.

Nasazení šablony ARM s výstupem

V této části nasadíte šablonu a uvidíte výstup koncových bodů ve formátu 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 aktualizuje prostředek místo vytvoření nového prostředku.

  1. Nasaďte šablonu spuštěním následujících příkazů. 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.

    Snímek obrazovky okna terminálu zobrazující výstup primárních koncových bodů ve formátu JSON

  1. Nasaďte šablonu spuštěním následujících příkazů. 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.

    Snímek obrazovky okna terminálu zobrazující výstup primárních koncových bodů ve formátu JSON

Kontrola nasazení výstupu

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

Snímek obrazovky webu Azure Portal znázorňující výběr výstupu v nabídce vlevo