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

Hiermee 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 azuredeploy.json-bestand 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. Dit voorbeeld 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 nu uitzien als in dit voorbeeld:

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

De geparameteriseerde ARM-sjabloon implementeren

Hier wijzigt u de naam van de implementatie om beter te laten zien 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

$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 waarmee toegestane waarden worden beperkt

Hier gaat u parameters gebruiken 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 de volgende code:

    "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 weer die door deze parameter zijn toegestaan. Als de sjabloon wordt uitgevoerd met een waarde die niet is toegestaan, mislukt de implementatie.

  4. Voeg een opmerking toe aan deze parameter.

    Schermopname van het bestand azuredeploy.json met de opmerking Dit zijn de toegestane waarden voor een Azure-opslagaccount in de regel voorafgaand aan de parameter storageSKU.

    ARM-sjablonen ondersteunen //- en /* */-opmerkingen.

  5. Werk resources bij om de parameter storageSKU te gebruiken. Als u gebruikmaakt van IntelliSense in Visual Studio Code, is deze stap eenvoudiger.

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

De ARM-sjabloon implementeren

Hier voert u de implementatie succesvol uit met behulp van een storageSKU-parameter die op de lijst met toegestane waarden staat. 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. Implementeer de sjabloon door de volgende opdrachten uit te voeren. 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

    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. Uw lijst met toegestane waarden voorkomt dat de gebruikers van uw sjabloon 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

    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.

    Schermopname van het terminalvenster met de implementatievalidatiefout.

  1. Implementeer de sjabloon door de volgende opdrachten uit te voeren. 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

    $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. Uw lijst met toegestane waarden voorkomt dat de gebruikers van uw sjabloon 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

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

    Schermopname van het terminalvenster met de implementatievalidatiefout.

Uitvoer toevoegen aan de ARM-sjabloon

Hier gaat u waarden toevoegen aan de sectie outputs van de ARM-sjabloon waarmee de eindpunten voor de opslagaccountresource als uitvoer worden geretourneerd.

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

  2. Druk op Enter en vervolgens op Enter. U krijgt een lijst met gerelateerde fragmenten. Selecteer nieuwe uitvoer. Er wordt een algemene uitvoer toegevoegd aan de sjabloon die er als volgt uitziet:

    "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 in de vorm van eindpunten in JSON-indeling. 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 werkt Azure de resource bij in plaats van een nieuwe resource te maken.

  1. Implementeer de sjabloon door de volgende opdrachten uit te voeren. 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.

    Schermopname van het terminalvenster met de uitvoer van de primaire eindpunten als JSON.

  1. Implementeer de sjabloon door de volgende opdrachten uit te voeren. 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.

    Schermopname van het terminalvenster met de uitvoer van de primaire eindpunten als JSON.

Controleer uw uitvoerimplementatie

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

Schermopname van Azure Portal met de uitvoerselectie in het linkermenu.