Övning – Lägga till parametrar till din Azure Resource Manager-mall

Slutförd

I den här övningen lägger du till en parameter för att definiera Azure-lagringskontots namn under distributionen. Sedan lägger du till en parameter för att definiera vilka SKU:er för lagringskonto som tillåts och definiera vilken som ska användas för den här distributionen. Du kan också lägga till användbarhet i Azure Resource Manager-mallen (ARM-mall) genom att lägga till utdata som du kan använda senare i distributionsprocessen.

Skapa parametrar för ARM-mallen

Här gör du din ARM-mall mer flexibel genom att lägga till parametrar som kan ställas in vid körning. Skapa en parameter för storageName-värdet.

  1. I filen azuredeploy.json i Visual Studio Code placerar du markören inuti klammerparenteserna i parameterattributet. Det ser ut så här: "parameters":{},

  2. Välj Angeoch ange sedan par. En lista över relaterade kodfragment visas. Välj ny parameter, som lägger till en allmän parameter i mallen. Det ser ut som i det här exemplet:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Ändra parametern från parameter1 till storageName och lämna typen som en sträng. Lägg till ett minLength-värde för 3 och ett maxLength-värde för 24. Lägg till ett beskrivningsvärde för Namnet på Azure-lagringsresursen.

  4. Parameterblocket bör nu se ut så här:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Använd den nya parametern i resources-blocket i värdena name och displayName. Hela filen ser ut som det här kodexemplet:

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

Distribuera den parametriserade ARM-mallen

Här ändrar du distributionens namn så att det bättre återspeglar vad distributionen gör och fyller i ett värde för den nya parametern.

Kör följande Azure CLI-kommandon i terminalen. Det här avsnittet är samma kod som du använde tidigare, men namnet på distributionen har ändrats. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namn som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa 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öljande Azure PowerShell-kommandon i terminalen. Det här avsnittet är samma kod som du använde tidigare, men namnet på distributionen har ändrats. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namn som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa 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}

Kontrollera distributionen

  1. När distributionen är klar går du tillbaka till Azure Portal i webbläsaren. Gå till resursgruppen och se att det nu finns 3 lyckade distributioner. Välj den här länken.

    Observera att alla tre distributionerna finns i listan.

  2. Utforska addnameparameter-distributionen precis som tidigare.

Lägg till en annan parameter som begränsar tillåtna värden

Här använder du parametrar för att begränsa de värden som tillåts för en parameter.

  1. Placera markören efter den avslutande klammerparentesen för parametern storageName. Lägg till ett kommatecken och välj Retur.

  2. Ange igen par och välj new-parameter.

  3. Ändra den nya allmänna parametern till följande kod:

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

    Här visar du de värden som den här parametern tillåter. Om mallen körs med ett värde som inte tillåts misslyckas distributionen.

  4. Lägg till en kommentar till denna parameter.

    Skärmbild av filen azuredeploy.json som visar kommentaren Detta är de tillåtna värdena för ett Azure Storage-konto på raden före parametern storageSKU.

    ARM-mallar kan användas med //- och /* */ -kommentarer.

  5. Uppdatera resurser för att använda storageSKU-parametern. Om du drar nytta av IntelliSense i Visual Studio Code gör det här steget enklare.

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

    Hela filen ser ut som det här kodexemplet:

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

Distribuera ARM-mallen

Här distribuerar du med hjälp av en storageSKU-parameter som finns i listan över tillåtna parametrar. Sedan försöker du distribuera mallen med hjälp av en storageSKU parameter som inte finns i listan över tillåtna. Den andra distributionen misslyckas som förväntat.

  1. Distribuera mallen genom att köra följande kommandon. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa 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}
    

    Vänta tills distributionen är färdig. Distributionen slutförs som förväntat. Din lista över tillåtna värden förhindrar att mallens användare skickar in parametervärden som inte fungerar för resursen. Vi ska se vad som händer när du anger en ogiltig SKU.

  2. Kör följande kommandon för att distribuera mallen med en otillåten parameter. Här ändrade du parametern storageSKU till Basic. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa 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}
    

    Den här distributionen misslyckas. Observera felet.

    Skärmbild av terminalfönstret som visar distributionsverifieringsfelet.

  1. Distribuera mallen genom att köra följande kommandon. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa 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
    

    Vänta tills distributionen är färdig. Distributionen slutförs som förväntat. Din lista över tillåtna värden förhindrar att mallens användare skickar in parametervärden som inte fungerar för resursen. Vi ska se vad som händer när du anger en ogiltig SKU.

  2. Kör följande kommandon för att distribuera mallen med en otillåten parameter. Här ändrade du parametern storageSKU till Basic. Fyll i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.

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

    Den här distributionen misslyckas. Observera felet.

    Skärmbild av terminalfönstret som visar distributionsverifieringsfelet.

Lägga till utdata i ARM-mallen

Här lägger du till outputs-avsnittet i ARM-mallen för att skapa slutpunkter för lagringskontoresursen.

  1. I filen azuredeploy.json i Visual Studio Code placerar du markören inuti klammerparenteserna i utdataattributet "outputs":{},.

  2. Tryck på Retur och skriv sedan ut. Du får en lista över relaterade kodfragment. Välj ny utdata. Den lägger till en allmän utdata till mallen som ser ut som i det här exemplet:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Ändra "output1" till "storageEndpoint" och ändra sedan värdet type för till "object". Ändra värdet value för till "[reference(parameters('storageName')).primaryEndpoints]". Det här uttrycket är det som vi beskrev i föregående lektion som hämtar slutpunktsdata. Eftersom vi angav objektet som typ returnerar det objektet i JSON-format.

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

Distribuera ARM-mallen med utdata

Här distribuerar du mallen och ser utdata för slutpunkter som JSON. Du måste fylla i ett unikt namn för storageName-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.

  1. Distribuera mallen genom att köra följande kommandon. Ersätt {your-unique-name} med en sträng som är unik för 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}
    

    Notera utdata.

    Skärmbild av terminalfönstret som visar de primära slutpunkterna som utdata som JSON.

  1. Distribuera mallen genom att köra följande kommandon. Ersätt {your-unique-name} med en sträng som är unik för dig.

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

    Notera utdata.

    Skärmbild av terminalfönstret som visar de primära slutpunkterna som utdata som JSON.

Kontrollera distributionen av utdata

I Azure-portalen går du till din addOutputs-distribution. Du kan även hitta dina utdata där.

Skärmbild av Azure Portal som visar utdatamarkeringen i den vänstra menyn.