Zelfstudie: Parameters aan uw ARM-sjabloon toevoegen

In de vorige zelfstudie hebt u geleerd hoe u een Azure-opslagaccount aan de sjabloon toevoegt en implementeert. In deze zelfstudie leert u hoe u de ARM-sjabloon (Azure Resource Manager) kunt verbeteren door er parameters aan toe te voegen. Deze instructie duurt 14 minuten .

Vereisten

U wordt aangeraden om eerst de zelfstudie over resources te voltooien, maar dit is niet verplicht.

Visual Studio Code moet zijn geïnstalleerd en werken met de extensie Azure Resource Manager Tools en Azure PowerShell of Azure Command-Line Interface (CLI). Zie Hulpprogramma's voor sjablonen voor meer informatie.

Sjabloon controleren

Aan het einde van de vorige zelfstudie bevat uw sjabloon het volgende JSON-bestand:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Mogelijk merkt u dat er een probleem is met deze sjabloon. De naam van het opslagaccount is in code vastgelegd. U kunt deze sjabloon alleen gebruiken om telkens hetzelfde opslagaccount te implementeren. Als u een opslagaccount met een andere naam wilt implementeren, moet u een nieuwe sjabloon maken. Dit is uiteraard geen praktische manier om uw implementaties te automatiseren.

Sjabloon herbruikbaar maken

Om uw sjabloon herbruikbaar te maken, voegen we een parameter toe waarmee u de naam van een opslagaccount kunt doorgeven. In het gemarkeerde JSON-bestand in het volgende voorbeeld ziet u de wijzigingen in uw sjabloon. De parameter storageName wordt geïdentificeerd als een tekenreeks. De naam van het opslagaccount bestaat uit kleine letters of cijfers en heeft een limiet van 24 tekens.

Kopieer het hele bestand en vervang uw sjabloon door de inhoud ervan.

{
  "$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
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Sjabloon implementeren

We gaan de sjabloon implementeren. In het volgende voorbeeld wordt de sjabloon geïmplementeerd met Azure CLI of PowerShell. Merk op dat u de naam van het opslagaccount opgeeft als een waarde in de implementatieopdracht. Geef voor het opslagaccount dezelfde naam op als de naam die u in de vorige zelfstudie hebt gebruikt.

Zie Resourcegroep maken als u de resourcegroep nog niet hebt gemaakt. In het voorbeeld wordt ervan uitgegaan dat u de templateFile variabele instelt op het pad van het sjabloonbestand, zoals wordt weergegeven in de eerste zelfstudie.

New-AzResourceGroupDeployment `
  -Name addnameparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Inzicht in resource-updates

Nadat u een opslagaccount hebt geïmplementeerd met dezelfde naam die u eerder hebt gebruikt, vraagt u zich misschien af hoe de herimplementatie van invloed is op de resource.

Als de resource al bestaat en er geen wijzigingen zijn in de eigenschappen, hoeft er geen verdere actie te worden ondernomen. Als de resource bestaat en een eigenschap wordt gewijzigd, wordt deze bijgewerkt. Als de resource niet bestaat, wordt deze gemaakt.

Op deze manier kunnen alle benodigde resources voor een Azure-oplossing worden opgenomen in uw sjabloon. U kunt de sjabloon veilig opnieuw implementeren en weten dat resources worden gewijzigd of alleen worden gemaakt wanneer dat nodig is. Als u bijvoorbeeld bestanden toevoegt aan uw opslagaccount, kunt u het opslagaccount opnieuw implementeren zonder de bestanden te verliezen.

Aanpassen aan de omgeving

Met parameters kunt u de implementatie aanpassen door waarden op te geven die zijn afgestemd op een bepaalde omgeving. U kunt verschillende waarden doorgeven, bijvoorbeeld op basis van of u implementeert in een ontwikkel-, test- of productieomgeving.

Met de vorige sjabloon wordt altijd een standaard lokaal redundante opslag (LRS) Standard_LRS-account geïmplementeerd. Mogelijk wilt u de flexibiliteit om verschillende SKU's (stock keeping units) te implementeren, afhankelijk van de omgeving. In het volgende voorbeeld ziet u de benodigde wijzigingen voor het toevoegen van een parameter voor de SKU. Kopieer het hele bestand en plak het over de sjabloon.

{
  "$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
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

De parameter storageSKU heeft een standaardwaarde. Gebruik deze waarde wanneer de implementatie deze niet opgeeft. Het bevat ook een lijst met toegestane waarden. Deze waarden komen overeen met de benodigde waarden voor het maken van een opslagaccount. U wilt dat uw sjabloongebruikers SKU's doorgeven die werken.

Sjabloon opnieuw implementeren

U kunt de app nu opnieuw implementeren. Omdat de standaard-SKU is ingesteld op Standard_LRS, hebt u al een parameterwaarde opgegeven.

New-AzResourceGroupDeployment `
  -Name addskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Notitie

Als de implementatie mislukt, gebruikt u de verbose schakeloptie om informatie op te halen over de resources die worden gemaakt. Gebruik de schakeloptie debug voor meer informatie over foutopsporing.

Als u de flexibiliteit van uw sjabloon wilt zien, gaan we deze opnieuw implementeren. Stel deze keer de SKU-parameter in op standaard GRS-Standard_GRS (geografisch redundante opslag). U kunt een nieuwe naam doorgeven om een ander opslagaccount te maken of dezelfde naam gebruiken om uw bestaande opslagaccount bij te werken. Beide opties werken.

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

Ten slotte gaan we nog een test uitvoeren en kijken wat er gebeurt wanneer u een SKU doorgeeft die niet tot de toegestane waarden behoort. In dit geval testen we het scenario waarin de sjabloongebruiker denkt dat basic een van de SKU's is.

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

De opdracht mislukt in één keer met een foutbericht met de toegestane waarden. De ARM-processor vindt de fout voordat de implementatie wordt gestart.

Resources opschonen

Als u verdergaat met de volgende zelfstudie, hoeft u de resourcegroep niet te verwijderen.

Als u nu stopt, kunt u de geïmplementeerde resources opschonen door de resourcegroep te verwijderen.

  1. Selecteer Resourcegroep in het linkermenu van Azure Portal.
  2. Typ de naam van de resourcegroep in het tekstveld Filteren op elk veld... .
  3. Schakel het selectievakje naast myResourceGroup in en selecteer myResourceGroup of de naam van uw resourcegroep.
  4. Selecteer Resourcegroep verwijderen in het bovenste menu.

Volgende stappen

U hebt de sjabloon die u in de eerste zelfstudie hebt gemaakt, verbeterd door parameters toe te voegen. In de volgende zelfstudie leert u meer over sjabloonfuncties.