Ü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-SKU zulässig ist, 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 später im Bereitstellungsprozess verwendet werden kann.

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. Setzen Sie in Visual Studio Code in der Datei azuredeploy.json Ihren Cursor in die geschweiften Klammern im Attribut parameters. "parameters":{},

  2. Drücken Sie die EINGABETASTE, und geben Sie par ein. Es wird eine Liste verwandter Codeausschnitte angezeigt. Wählen Sie arm-param aus. Hierdurch wird der Vorlage ein generischer Parameter hinzufügt. Das sieht folgendermaßen aus:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Ändern Sie den Parameter, sodass er storageName heißt, und belassen Sie den Typ als Zeichenfolge. Fügen Sie einen minLength-Wert von 3 und einen maxLength-Wert von 24 hinzu. Fügen Sie den Beschreibungswert Der Name der Azure Storage-Ressource. hinzu.

  4. Der Parameterblock sollte wie folgt aussehen:

    "parameters": {
      "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
              "description": "The name of the Azure storage resource"
          }
      }
    },
    
  5. Verwenden Sie den neuen Parameter im resources-Block sowohl im Wert name als auch im Wert displayName. Die gesamte Datei sieht wie folgt 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": "Der Name der Azure Storage-Ressource."
                }
            }
        },
        "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. 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. Bei dem Ausschnitt handelt es sich um denselben Code, den Sie zuvor verwendet haben, wobei jedoch der Name der Bereitstellung geändert wurde. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie in der letzten Lerneinheit erstellt haben. In diesem Fall aktualisiert Azure die 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. Bei dem Ausschnitt handelt es sich um denselben Code, den Sie zuvor verwendet haben, wobei jedoch der Name der Bereitstellung geändert wurde. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie in der letzten Lerneinheit erstellt haben. In diesem Fall aktualisiert Azure die 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. Navigieren Sie in Ihrem Browser zum Azure-Portal zurück. Wechseln Sie zu Ihrer Ressourcengruppe, und sehen Sie sich an, dass jetzt 3 Bereitstellungen erfolgreich sind. 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, um zulässige Werte einzuschränken

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

  1. Platzieren Sie Ihren Cursor hinter der schließenden Klammer für den Parameter storageName. Fügen Sie ein Komma hinzu, und drücken Sie die EINGABETASTE.

  2. Geben Sie erneut par ein, und wählen Sie arm-param aus.

  3. Ändern Sie den neuen generischen Parameter in Folgendes:

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

    Hier listen Sie die Werte auf, die für diesen Parameter zulässig sein werden. Wenn die Vorlage mit einem Wert ausgeführt wird, der nicht zulässig ist, schlägt die Bereitstellung fehl.

  4. Fügen Sie diesem Parameter einen Kommentar hinzu.

    Die Datei „azuredeploy.json“ zeigt den Kommentar „Dies sind die zulässigen Werte für ein Speicherkonto“ oberhalb des Parameters „storageSKU“ an.

    ARM-Vorlagen unterstützen die Kommentare // und /* */.

  5. Aktualisieren Sie resources (Ressourcen) so, dass der Parameter storageSKU verwendet wird. Nutzen Sie IntelliSense in Visual Studio Code, um diesen Schritt zu vereinfachen.

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

    Die gesamte Datei sieht wie folgt 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": "Der Name der Azure Storage-Ressource."
                }
            },
            "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')]"
                }
            }
        ],
        "outputs": {}
    }
    
  6. Speichern Sie die Datei.

Bereitstellen der ARM-Vorlage

Hier stellen Sie die Bereitstellung erfolgreich mithilfe eines Parameters in storageSKU der Liste der zulässigen Parameter sicher. Anschließend versuchen Sie, die Vorlage mithilfe eines Parameters bereitzustellen, der nicht storageSKU in der Liste der zulässigen Vorlagen enthalten ist. Die zweite Bereitstellung schlägt erwartungsgemäß fehl.

  1. Führen Sie die folgenden Befehle aus, um die Vorlage bereitzustellen. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie im letzten Abschnitt erstellt haben. In diesem Fall aktualisiert Azure die 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 zulässigen Werte verhindern, 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. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie im letzten Abschnitt erstellt haben. In diesem Fall aktualisiert Azure die 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.

    Terminalfenster mit dem Bereitstellungsüberprüfungsfehler.

  1. Führen Sie die folgenden Befehle aus, um die Vorlage bereitzustellen. Geben Sie einen eindeutigen Namen für den Parameter storageName ein. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie im letzten Abschnitt erstellt haben. In diesem Fall aktualisiert Azure die 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 zulässigen Werte verhindern, 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. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie im letzten Abschnitt erstellt haben. In diesem Fall aktualisiert Azure die 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.

    Terminalfenster mit dem Bereitstellungsüberprüfungsfehler.

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. Platzieren Sie in der Datei azuredeploy.json in Visual Studio Code den Cursor in den geschweiften Klammern im Ausgabeattribut "outputs":{}, .

  2. Drücken Sie die EINGABETASTE, und geben Sie out ein. Es wird eine Liste verwandter Codeausschnitte angezeigt. Wählen Sie arm-output aus. Hierdurch wird der Vorlage eine generische Ausgabe hinzufügt. Das sieht folgendermaßen aus:

    "outputs": {
        "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Ändern Sie "output1" in "storageEndpoint", ändern Sie dann den Wert von in "object" und schließlich den Wert type von in value "[reference(parameters('storageName')).primaryEndpoints]". Dieser Ausdruck wird in der vorherigen Einheit beschrieben und ruft die Endpunktdaten ab. Da wir object als Typ angegeben haben, wird das Objekt im JSON-Format zurückgegeben.

    "outputs": {
       "storageEndpoint": {
           "type": "object",
           "value": "[reference(parameters('storageName')).primaryEndpoints]"
       }
    
  4. 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. Denken Sie daran, dass dieser Name in ganz Azure eindeutig sein muss. Sie können den eindeutigen Namen verwenden, den Sie im letzten Abschnitt erstellt haben. In diesem Fall aktualisiert Azure die Ressource, anstatt eine neue zu erstellen.

  1. Führen Sie die folgenden Befehle aus, um die Vorlage bereitzustellen. 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.

    Terminalfenster mit den als JSON ausgegebenen primären Endpunkten.

  1. Führen Sie die folgenden Befehle aus, um die Vorlage bereitzustellen. 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.

    Terminalfenster mit den als JSON ausgegebenen primären Endpunkten.

Überprüfen Ihrer Ausgabebereitstellung

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

Azure-Portal mit der Ausgabeauswahl im linken Menü.