Oefening: parameters en uitvoer toevoegen aan uw Azure Resource Manager-sjabloon

Voltooid

In deze oefening voegt u een parameter toe om de naam van het Azure-opslagaccount te definiƫren tijdens de implementatie. Vervolgens voegt u een parameter toe om te definiƫren welke opslagaccount-SKU's zijn toegestaan en definieert u welke moet worden gebruikt voor deze implementatie. U voegt ook nuttige informatie toe aan de Arm-sjabloon (Azure Resource Manager) door een uitvoer toe te voegen die u later in het implementatieproces kunt gebruiken.

Parameters voor de ARM-sjabloon maken

Hier maakt u uw ARM-sjabloon flexibeler door parameters toe te voegen die tijdens runtime kunnen worden ingesteld. Maak een parameter voor de waarde storageName.

  1. Plaats in het bestand azuredeploy.json in Visual Studio Code de cursor in de accolades in het parameterkenmerk . Dit ziet er als volgt uit: "parameters":{},

  2. Selecteer Invoeren en voer par in. U ziet een lijst met verwante fragmenten. Kies nieuwe parameter, waarmee een algemene parameter wordt toegevoegd aan de sjabloon. Het ziet er als volgt uit:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Wijzig de parameter van parameter1 in storageName en laat het type ongewijzigd als een tekenreeks. Voeg voor minLength de waarde 3 toe en voor maxLength de waarde 24. Voeg een beschrijvingswaarde toe van De naam van de Azure-opslagresource.

  4. Het parameterblok moet er als volgt uitzien:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Gebruik de nieuwe parameter in het blok resources voor de waarden name en displayName. Het hele bestand ziet er als volgt uit:

    {
      "$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. Sla het bestand op.

De geparameteriseerde ARM-sjabloon implementeren

Hier wijzigt u de naam van de implementatie om beter weer te geven wat deze implementatie doet en vult u een waarde in voor de nieuwe parameter.

Voer in de terminal de volgende Azure CLI-opdrachten uit. Dit fragment is dezelfde code die u eerder hebt gebruikt, maar de naam van de implementatie is gewijzigd. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de vorige les hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

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}

Voer in de terminal de volgende Azure PowerShell-opdrachten uit. Dit fragment is dezelfde code die u eerder hebt gebruikt, maar de naam van de implementatie is gewijzigd. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de vorige les hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

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

Uw implementatie controleren

  1. Wanneer de implementatie is voltooid, gaat u terug naar Azure Portal in uw browser. Ga naar uw resourcegroep en kijk of er nu drie geslaagde implementaties zijn. Selecteer deze koppeling.

    Zoals u ziet worden alle drie de implementaties in de lijst vermeld.

  2. Verken de implementatie addnameparameter zoals u eerder hebt gedaan.

Een andere parameter toevoegen om toegestane waarden te beperken

Hier gebruikt u parameters om de waarden te beperken die zijn toegestaan voor een parameter.

  1. Plaats de cursor na de afsluitende accolade voor de parameter storageName. Voeg een komma toe en selecteer Invoeren.

  2. Voer opnieuw par in en selecteer nieuwe parameter.

  3. Wijzig de nieuwe algemene parameter in het volgende:

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

    Hier geeft u de waarden op die door deze parameter worden toegestaan. Als de sjabloon wordt uitgevoerd met een waarde die niet is toegestaan, mislukt de implementatie.

  4. Voeg een opmerking toe aan deze parameter.

    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-sjablonen ondersteunen //- en /* */-opmerkingen.

  5. Werk resources bij om de parameter storageSKU te gebruiken. Maak deze stap eenvoudiger door van IntelliSense in Visual Studio Code gebruik te maken.

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

    Het hele bestand ziet er als volgt uit:

    {
      "$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. Sla het bestand op.

De ARM-sjabloon implementeren

Hier implementeert u met succes met behulp van een storageSKU parameter in de lijst met toegestane waarden. Vervolgens probeert u de sjabloon te implementeren met behulp van een storageSKU parameter die zich niet in de lijst met toegestane waarden bevindt. De tweede implementatie mislukt zoals verwacht.

  1. Voer de volgende opdrachten uit om de sjabloon te implementeren. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

    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}
    

    Wacht tot de implementatie is voltooid. Deze implementatie lukt zoals verwacht. Met de toegestane waarden kunnen gebruikers van uw sjabloon geen parameterwaarden doorgeven die niet werken voor de resource. Laten we eens kijken wat er gebeurt als u een ongeldige SKU opgeeft.

  2. Voer de volgende opdrachten uit om de sjabloon te implementeren met een parameter die niet is toegestaan. Hier hebt u de parameter storageSKU gewijzigd in Basic. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

    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}
    

    Deze implementatie mislukt. Let op de fout.

    Screenshot of the Terminal window showing the deployment validation error.

  1. Voer de volgende opdrachten uit om de sjabloon te implementeren. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

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

    Wacht tot de implementatie is voltooid. Deze implementatie lukt zoals verwacht. Met de toegestane waarden kunnen gebruikers van uw sjabloon geen parameterwaarden doorgeven die niet werken voor de resource. Laten we eens kijken wat er gebeurt als u een ongeldige SKU opgeeft.

  2. Voer de volgende opdrachten uit om de sjabloon te implementeren met een parameter die niet is toegestaan. Hier hebt u de parameter storageSKU gewijzigd in Basic. Vul een unieke naam in voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

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

    Deze implementatie mislukt. Let op de fout.

    Screenshot of the Terminal window showing the deployment validation error.

Uitvoer toevoegen aan de ARM-sjabloon

Hier voegt u toe aan de outputs sectie van de ARM-sjabloon om de eindpunten voor de opslagaccountresource uit te voeren.

  1. Plaats in het bestand azuredeploy.json in Visual Studio Code de cursor in de accolades in het kenmerk "outputs":{},outputs.

  2. Druk op Enter en vervolgens op Enter. U krijgt een lijst met gerelateerde fragmenten. Selecteer nieuwe uitvoer. Hiermee voegt u generieke uitvoer toe aan de sjabloon. Dit zal er als volgt uitzien:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Wijzig 'output1' in 'storageEndpoint' en wijzig vervolgens de waarde van type ' object'. Wijzig de waarde van value'[reference(parameters('storageName')).primaryEndpoints]'. Deze expressie is de expressie die we in de vorige les hebben beschreven waarmee de eindpuntgegevens worden opgehaald. Omdat we het object hebben opgegeven als het type, wordt het object in JSON-indeling geretourneerd.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    
  4. Sla het bestand op.

De ARM-sjabloon met uitvoer implementeren

Hier implementeert u de sjabloon en ziet u de uitvoer van de eindpunten als JSON. U moet een unieke naam invullen voor de parameter storageName. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval wordt de resource door Azure bijgewerkt in plaats van dat er een nieuwe wordt gemaakt.

  1. Voer de volgende opdrachten uit om de sjabloon te implementeren. Zorg ervoor dat u {uw-unieke naam} vervangt door een tekenreeks die uniek is voor u.

    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}
    

    Let op de uitvoer.

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

  1. Voer de volgende opdrachten uit om de sjabloon te implementeren. Zorg ervoor dat u {uw-unieke naam} vervangt door een tekenreeks die uniek is voor u.

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

    Let op de uitvoer.

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

Controleer uw uitvoerimplementatie

Ga in Azure Portal naar uw addOutputs-implementatie. Hier vindt u ook uw uitvoer.

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