Übung: Hinzufügen von Parametern und Ausgaben zu Ihrer Azure Resource Manager-Vorlage
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
.
Setzen Sie in Visual Studio Code in der Datei azuredeploy.json Ihren Cursor in die geschweiften Klammern im Attribut parameters. Dies sieht folgendermaßen aus:
"parameters":{},
Drücken Sie die EINGABETASTE, und geben Sie par ein. Es wird eine Liste verwandter Codeausschnitte angezeigt. Wählen Sie new-parameter aus, wodurch der Vorlage ein generischer Parameter hinzugefügt wird. Es sieht wie in diesem Beispiel aus:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Ändern Sie den Parameter von parameter1 in storageName, 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.
Der Parameterblock sollte nun wie im folgenden Beispiel aussehen:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Verwenden Sie den neuen Parameter im
resources
-Block sowohl im Wertname
als auch im WertdisplayName
. 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": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS" } } ], "outputs": {} }
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
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.
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.
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.Geben Sie nochmals par ein, und wählen Sie new-parameter aus.
Ändern Sie den neuen generischen Parameter in den folgenden 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 listen Sie die Werte auf, die für diesen Parameter zulässig sind. Wenn die Vorlage mit einem Wert ausgeführt wird, der nicht zulässig ist, schlägt die Bereitstellung fehl.
Fügen Sie diesem Parameter einen Kommentar hinzu.
ARM-Vorlagen unterstützen die Kommentare
//
und/* */
.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": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }
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.
Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. 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 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.
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 ParameterstorageName
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.
Stellen Sie die Vorlage mithilfe der folgenden Befehle bereit. 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 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.
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 ParameterstorageName
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.
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.
Positionieren Sie Ihren Cursor in der Datei azuredeploy.json in Visual Studio Code zwischen den geschweiften Klammern im Ausgabeattribut
"outputs":{},
.Drücken Sie die EINGABETASTE, und geben Sie out ein. Ihnen wird eine Liste verwandter Codeausschnitte angezeigt. Wählen Sie new-output aus. Sie fügt der Vorlage eine generische Ausgabe hinzu, die wie in diesem Beispiel aussieht:
"outputs": { "output1": { "type": "string", "value": "value" }
Ändern Sie zunächst „output1“ in „storageEndpoint“ und dann den Wert von
type
in „object“. Ändern Sie den Wert vonvalue
in „[reference(parameters('storageName')).primaryEndpoints]“. Dieser Ausdruck wurde in der vorherigen Lerneinheit erläutert. Hier werden die Endpunktdaten abgerufen. Da wir object als Typ angegeben haben, wird das Objekt im JSON-Format zurückgegeben."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
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.
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.
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.
Überprüfen Ihrer Ausgabebereitstellung
Wechseln Sie im Azure-Portal zu Ihrer addOutputs-Bereitstellung. Dort finden Sie auch Ihre Ausgabe.