Übung: Hinzufügen von Parametern und Ausgaben zu Ihrer Azure Resource Manager-Vorlage

Abgeschlossen

In dieser Übung fügen Sie einen Parameter hinzu, um den Azure Storage-Kontonamen während der Bereitstellung zu definieren. Anschließend fügen Sie einen Parameter hinzu, um zu definieren, welche Speicherkonto-SKUs zulässig sind, und definieren, welche für diese Bereitstellung verwendet werden soll. Außerdem erhöhen Sie die Nützlichkeit der Azure Resource Manager-Vorlage (ARM-Vorlage), indem Sie eine Ausgabe hinzufügen, die Sie später im Bereitstellungsprozess verwenden können.

Erstellen von Parametern für die ARM-Vorlage

Hier gestalten Sie Ihre ARM-Vorlage flexibler, indem Sie Parameter hinzufügen, die zur Laufzeit festgelegt werden können. Erstellen Sie einen Parameter für den Wert storageName.

  1. Aktualisieren Sie in Visual Studio Code den Abschnitt der Datei "parameters":{}, wie folgt:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    

    Um die JSON-Datei richtig zu formatieren, drücken Sie ALT+UMSCHALT+F.

  2. Verwenden Sie den neuen Parameter im resources-Block sowohl im Wert name als auch im Wert displayName. Die gesamte Datei sieht wie in diesem Codebeispiel aus:

    {
      "$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": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Speichern Sie die Datei.

Bereitstellen der parametrisierten ARM-Vorlage

Hier ändern Sie den Namen der Bereitstellung so, dass er die Funktion der Bereitstellung besser wiedergibt, und geben einen Wert für den neuen Parameter ein.

Führen Sie die folgenden Azure CLI-Befehle im Terminal aus. Dieses Skript ist identisch mit dem Skript, das Sie zuvor verwendet haben, außer der Bereitstellungsname wurde geändert. Geben Sie einen eindeutigen Wert für den storageName Parameter ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

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}

Führen Sie die folgenden Azure PowerShell-Befehle im Terminal aus. Dieses Skript ist identisch mit dem skript, das Sie zuvor verwendet haben, außer der Bereitstellungsname wurde geändert. Geben Sie einen eindeutigen Wert für den storageName Parameter ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

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

Überprüfen Ihrer Bereitstellung

  1. Wenn die Bereitstellung abgeschlossen ist, kehren Sie zum Azure-Portal in Ihrem Browser zurück. Wechseln Sie zu Ihrer Ressourcengruppe, in der jetzt 3 erfolgreiche Bereitstellungen angezeigt werden. Wählen Sie diese Verknüpfung aus.

    Beachten Sie, dass sich alle drei Bereitstellungen in der Liste befinden.

  2. Untersuchen Sie die addnameparameter-Bereitstellung, wie bereits zuvor geschehen.

Hinzufügen eines weiteren Parameters, der zulässige Werte einschränkt

Hier verwenden Sie Parameter, um die für einen Parameter zulässigen Werte einzuschränken.

  1. Fügen Sie dem Abschnitt storageSKU der Datei parameters einen neuen Parameter hinzu, der genannt wird.

    // This is the allowed values for an Azure storage account
    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    Die erste Zeile ist ein Kommentar. ARM-Vorlagen unterstützen die Kommentare // und /* */.

  2. Aktualisieren Sie resources (Ressourcen) so, dass der Parameter storageSKU verwendet wird. Wenn Sie IntelliSense in Visual Studio Code nutzen, wird dieser Schritt vereinfacht.

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

    Die gesamte Datei sieht wie in diesem Codebeispiel aus:

    {
      "$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": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Speichern Sie die Datei.

Bereitstellen der ARM-Vorlage

Hier können Sie sie erfolgreich bereitstellen, indem Sie einen storageSKU-Parameter verwenden, der sich in der Liste zulässiger Parameter befindet. Versuchen Sie anschließend, die Vorlage mithilfe des storageSKU-Parameters bereitzustellen, der sich nicht in dieser Liste befindet. Die zweite Bereitstellung schlägt erwartungsgemäß fehl.

  1. Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

    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}
    

    Warten Sie, bis diese Bereitstellung abgeschlossen ist. Diese Bereitstellung wird erwartungsgemäß erfolgreich abgeschlossen. Die Liste der zulässigen Werte verhindert, dass Benutzer Ihrer Vorlage Parameterwerte übergeben, die für die Ressource nicht funktionieren. Sehen wir uns an, was geschieht, wenn Sie eine ungültige SKU angeben.

  2. Führen Sie die folgenden Befehle aus, um die Vorlage mit einem unzulässigen Parameter bereitzustellen. Hier haben Sie den Parameter storageSKU in Basic geändert. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

    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}
    

    Diese Bereitstellung schlägt fehl. Beachten Sie den Fehler.

    Screenshot: Terminalfenster mit dem Fehler bei der Bereitstellungsüberprüfung

  1. Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

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

    Warten Sie, bis diese Bereitstellung abgeschlossen ist. Diese Bereitstellung wird erwartungsgemäß erfolgreich abgeschlossen. Die Liste der zulässigen Werte verhindert, dass Benutzer Ihrer Vorlage Parameterwerte übergeben, die für die Ressource nicht funktionieren. Sehen wir uns an, was geschieht, wenn Sie eine ungültige SKU angeben.

  2. Führen Sie die folgenden Befehle aus, um die Vorlage mit einem unzulässigen Parameter bereitzustellen. Hier haben Sie den Parameter storageSKU in Basic geändert. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

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

    Diese Bereitstellung schlägt fehl. Beachten Sie den Fehler.

    Screenshot: Terminalfenster mit dem Fehler bei der Bereitstellungsüberprüfung

Hinzufügen von Ausgaben zur ARM-Vorlage

Hier fügen Sie dem Abschnitt outputs der ARM-Vorlage etwas hinzu, um die Endpunkte für die Speicherkontoressource auszugeben.

  1. Aktualisieren Sie in Visual Studio Code den Abschnitt in der Datei "outputs":{}, wie folgt:

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    }
    
  2. Speichern Sie die Datei.

Bereitstellen der ARM-Vorlage mit einer Ausgabe

Hier stellen Sie die Vorlage bereit und sehen die Endpunkte, die als JSON ausgegeben werden. Sie müssen einen eindeutigen Namen für den Parameter storageName eingeben. Sie muss global eindeutig in Azure sein, 3 bis 24 Zeichen enthalten und nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Sie können den eindeutigen Namen, den Sie in der vorherigen Einheit erstellt haben, wiederverwenden. Wenn Sie dies tun, aktualisiert Azure die vorhandene Ressource, anstatt eine neue zu erstellen.

  1. Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. Stellen Sie sicher, dass Sie {your-unique-Name} durch eine für Sie eindeutige Zeichenfolge ersetzen.

    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}
    

    Beachten Sie die Ausgabe.

    Screenshot: Terminalfenster mit der Ausgabe der primären Endpunkte als JSON

  1. Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. Stellen Sie sicher, dass Sie {your-unique-Name} durch eine für Sie eindeutige Zeichenfolge ersetzen.

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

    Beachten Sie die Ausgabe.

    Screenshot: Terminalfenster mit der Ausgabe der primären Endpunkte als JSON

Überprüfen Ihrer Ausgabebereitstellung

Wechseln Sie im Azure-Portal zu Ihrer addOutputs-Bereitstellung. Dort finden Sie auch Ihre Ausgabe.

Screenshot: Azure-Portal mit der Ausgabeauswahl im linken Menü