Øvelse – Føj parametre og output til skabelonen Azure Resource Manager

Fuldført

I denne øvelse skal du tilføje en parameter for at definere navnet på Azure Storage-kontoen under udrulningen. Derefter skal du tilføje en parameter for at definere, hvilke lagerkonto-SKU'er der er tilladt, og definere, hvilken der skal bruges til denne installation. Du kan også føje anvendelighed til Skabelonen Azure Resource Manager (ARM-skabelon) ved at tilføje et output, som du kan bruge senere i udrulningsprocessen.

Opret parametre for ARM-skabelonen

Her kan du gøre din ARM-skabelon mere fleksibel ved at tilføje parametre, der kan angives på kørselstidspunktet. Opret en parameter for den storageName værdi.

  1. I azuredeploy.json-filen i Visual Studio Code skal du placere markøren i klammeparenteserne i parametre attributten. Det ser sådan ud: "parameters":{},

  2. Vælg Angiv, og angiv derefter par. Du kan se en liste over relaterede kodestykker. Vælg new-parameter, som føjer en generisk parameter til skabelonen. Det ser ud som i dette eksempel:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Skift parameteren fra parameter1 til storageName, og lad typen være en streng. Tilføj en minLength- værdi på 3 og en maxLength værdi på 24. Tilføj en beskrivelsesværdi for Navnet på Azure Storage-ressourcen.

  4. Parameterblokken bør nu se ud som i dette eksempel:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Brug den nye parameter i resources-blokken i både name- og displayName-værdierne. Hele filen ligner dette kodeeksempel:

    {
      "$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. Gem filen.

Udrul den parameteriserede ARM-skabelon

Her kan du ændre navnet på installationen, så det bedre afspejler, hvad denne installation gør, og udfylde en værdi for den nye parameter.

Kør følgende Azure CLI-kommandoer i terminalen. Dette kodestykke er den samme kode, du brugte tidligere, men navnet på installationen ændres. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i den sidste enhed. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

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}

Kør følgende Azure PowerShell-kommandoer i terminalen. Dette kodestykke er den samme kode, du brugte tidligere, men navnet på installationen ændres. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i den sidste enhed. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

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

Kontrollér din installation

  1. Når installationen er fuldført, skal du gå tilbage til Azure Portal i din browser. Gå til din ressourcegruppe, og se, at der nu er 3 fuldførte udrulninger. Vælg dette link.

    Bemærk, at alle tre installationer er på listen.

  2. Udforsk addnameparameter installation, som du gjorde tidligere.

Tilføj endnu en parameter, der begrænser tilladte værdier

Her kan du bruge parametre til at begrænse de værdier, der er tilladt for en parameter.

  1. Placer markøren efter slutparentesen for parameteren storageName. Tilføj et komma, og vælg Angiv.

  2. Angiv igen par, og vælg new-parameter.

  3. Skift den nye generiske parameter til følgende kode:

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

    Her viser du de værdier, som denne parameter tillader. Hvis skabelonen kører med en værdi, der ikke er tilladt, mislykkes installationen.

  4. Føj en kommentar til denne parameter.

    Skærmbillede af den azuredeploy.json fil, der viser kommentaren Dette er de tilladte værdier for en Azure-lagerkonto på linjen før parameteren storageSKU.

    ARM-skabeloner understøtter // og /* */ kommentarer.

  5. Opdater ressourcer for at bruge parameteren storageSKU. Hvis du udnytter IntelliSense i Visual Studio Code, gør det dette trin nemmere.

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

    Hele filen ligner dette kodeeksempel:

    {
      "$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. Gem filen.

Udrul ARM-skabelonen

Her kan du installere ved hjælp af en storageSKU parameter, der findes på listen over tilladte. Derefter forsøger du at installere skabelonen ved hjælp af en storageSKU parameter, der ikke findes på listen over tilladte. Den anden installation mislykkes som forventet.

  1. Installer skabelonen ved at køre følgende kommandoer. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i det sidste afsnit. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

    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}
    

    Tillad, at denne installation afsluttes. Denne installation lykkes som forventet. Listen over tilladte værdier forhindrer brugerne af skabelonen i at angive parameterværdier, der ikke fungerer for ressourcen. Lad os se, hvad der sker, når du angiver en ugyldig SKU.

  2. Kør følgende kommandoer for at installere skabelonen med en parameter, der ikke er tilladt. Her har du ændret parameteren storageSKU til Basic. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i det sidste afsnit. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

    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}
    

    Denne installation mislykkes. Bemærk fejlen.

    Skærmbillede af vinduet Terminal, der viser valideringsfejlen for installationen.

  1. Installer skabelonen ved at køre følgende kommandoer. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i det sidste afsnit. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

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

    Tillad, at denne installation afsluttes. Denne installation lykkes som forventet. Listen over tilladte værdier forhindrer brugerne af skabelonen i at angive parameterværdier, der ikke fungerer for ressourcen. Lad os se, hvad der sker, når du angiver en ugyldig SKU.

  2. Kør følgende kommandoer for at installere skabelonen med en parameter, der ikke er tilladt. Her har du ændret parameteren storageSKU til Basic. Udfyld et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i det sidste afsnit. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

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

    Denne installation mislykkes. Bemærk fejlen.

    Skærmbillede af vinduet Terminal, der viser valideringsfejlen for installationen.

Føj output til ARM-skabelonen

Her føjer du til afsnittet outputs i ARM-skabelonen for at sende slutpunkterne for lagerkontoressourcen.

  1. I filen azuredeploy.json i Visual Studio Code skal du placere markøren i klammeparenteserne i outputattributten "outputs":{},.

  2. Tryk på Enter, og angiv derefter ud. Du får vist en liste over relaterede kodestykker. Vælg nyt output. Det føjer et generisk output til skabelonen, der ligner dette eksempel:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Skift "output1" til "storageEndpoint", og ret derefter værdien af type til "objekt". Ret værdien af value til "[reference(parameters('storageName')).primaryEndpoints]". Dette udtryk er det, vi beskrev i det forrige undermodul, der henter slutpunktdataene. Da vi har angivet objekt som typen, returneres objektet i JSON-format.

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

Udrul ARM-skabelonen med et output

Her udruller du skabelonen og får vist slutpunkterne som JSON. Du skal angive et entydigt navn til parameteren storageName. Husk, at dette navn skal være entydigt på tværs af hele Azure. Du kan bruge det entydige navn, du oprettede i det sidste afsnit. I så fald opdaterer Azure ressourcen i stedet for at oprette en ny.

  1. Installer skabelonen ved at køre følgende kommandoer. Sørg for at erstatte {your-unique-name} med en streng, der er entydig for dig.

    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}
    

    Bemærk outputtet.

    Skærmbillede af vinduet Terminal, der viser outputtet for de primære slutpunkter som JSON.

  1. Installer skabelonen ved at køre følgende kommandoer. Sørg for at erstatte {your-unique-name} med en streng, der er entydig for dig.

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

    Bemærk outputtet.

    Skærmbillede af vinduet Terminal, der viser outputtet for de primære slutpunkter som JSON.

Kontrollér udrulningen af outputtet

På Azure Portal skal du gå til din addOutputs installation. Du kan også finde dit output der.

Skærmbillede af Azure Portal, der viser outputvalget i menuen til venstre.