Ćwiczenie — dodawanie parametrów i danych wyjściowych do szablonu usługi Azure Resource Manager
W tym ćwiczeniu dodasz parametr definiujący nazwę konta magazynu platformy Azure podczas wdrażania. Następnie dodasz parametr, aby zdefiniować dozwolone jednostki SKU konta magazynu i zdefiniować, który z nich ma być używany na potrzeby tego wdrożenia. Można również dodać użyteczność do szablonu usługi Azure Resource Manager (szablon usługi ARM), dodając dane wyjściowe, których można użyć w dalszej części procesu wdrażania.
Tworzenie parametrów szablonu usługi ARM
Zwiększysz teraz elastyczność swojego szablonu usługi ARM przez dodanie parametrów, które można ustawiać w czasie wykonywania. Utwórz parametr dla wartości storageName
.
W pliku azuredeploy.json w programie Visual Studio Code umieść kursor wewnątrz nawiasów klamrowych w atrybucie parameters. Wygląda na to:
"parameters":{},
Naciśnij klawisz Enter, a następnie wprowadź ciąg par. Zostanie wyświetlona lista powiązanych fragmentów kodu. Wybierz nowy parametr, który dodaje do szablonu parametr ogólny. Wygląda na to, że ten przykład:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Zmień parametr z parametru1 na storageName i pozostaw typ jako ciąg. Dodaj właściwość minLength o wartości 3 i właściwość maxLength o wartości 24. Dodaj wartość opisu Nazwa zasobu usługi Azure Storage.
Blok parametrów powinien teraz wyglądać następująco:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Użyj nowego parametru w bloku
resources
zarówno dla wartościname
, jak idisplayName
. Cały plik wygląda następująco:{ "$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": {} }
Zapisz plik.
Wdrażanie sparametryzowanego szablonu usługi ARM
W tym miejscu zmienisz nazwę wdrożenia, aby lepiej odzwierciedlała jego funkcję, i wypełnisz wartość nowego parametru.
Uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure w terminalu. Jest to ten sam fragment kodu, który był wcześniej używany, ale nazwa wdrożenia została zmieniona. Podaj unikatową nazwę dla parametru storageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej lekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.
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}
Uruchom następujące polecenia programu Azure PowerShell w terminalu. Jest to ten sam fragment kodu, który był wcześniej używany, ale nazwa wdrożenia została zmieniona. Podaj unikatową nazwę dla parametru storageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej lekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Sprawdzanie wdrożenia
Po zakończeniu wdrażania wróć do witryny Azure Portal w przeglądarce. Przejdź do grupy zasobów i sprawdź, czy istnieją teraz 3 Pomyślnie wdrożeń. Wybierz ten link.
Zauważ, że wszystkie trzy wdrożenia znajdują się na liście.
Zapoznaj się z wdrożeniem addnameparameter, tak jak wcześniej.
Dodaj inny parametr, który ogranicza dozwolone wartości
W tym miejscu za pomocą parametrów ograniczysz wartości dozwolone dla parametru.
Umieść kursor za zamykającym nawiasem klamrowym parametru
storageName
. Dodaj przecinek i naciśnij klawisz Enter.Ponownie wprowadź ciąg par i wybierz pozycję new-parameter.
Zmień nowy parametr ogólny na następujący kod:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
W tym miejscu znajduje się lista wartości dozwolonych przez ten parametr. Jeśli szablon zostanie uruchomiony z wartością, która nie jest dozwolona, wdrożenie zakończy się niepowodzeniem.
Dodaj komentarz do tego parametru.
Szablony usługi Resource Manager obsługują komentarze
//
i/* */
.Zaktualizuj sekcję resources, aby użyć parametru
storageSKU
. Jeśli korzystasz z funkcji IntelliSense w programie Visual Studio Code, ułatwi to wykonanie tego kroku."sku": { "name": "[parameters('storageSKU')]" }
Cały plik wygląda następująco:
{ "$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": {} }
Zapisz plik.
Wdrażanie szablonu usługi ARM
W tej lekcji pomyślnie wdrożysz aplikację przy użyciu parametru storageSKU
, który znajduje się na liście dozwolonych. Następnie spróbujesz wdrożyć szablon przy użyciu storageSKU
parametru, który nie znajduje się na liście dozwolonych. Drugie wdrożenie kończy się niepowodzeniem zgodnie z oczekiwaniami.
Wdróż szablon, uruchamiając następujące polecenia. Podaj unikatową nazwę dla parametru
storageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.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}
Zezwól na zakończenie tego wdrożenia. Zgodnie z oczekiwaniami to wdrożenie kończy się powodzeniem. Lista dozwolonych wartości uniemożliwia użytkownikom szablonu przekazywanie wartości parametrów, które nie działają dla zasobu. Zobaczmy, co się stanie w przypadku podania nieprawidłowej jednostki SKU.
Uruchom następujące polecenia, aby wdrożyć szablon z niedozwolonym parametrem. Zmieniono parametr
storageSKU
na Podstawowa. Podaj unikatową nazwę dla parametrustorageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.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}
To wdrożenie kończy się niepowodzeniem. Zwróć uwagę na błąd.
Wdróż szablon, uruchamiając następujące polecenia. Podaj unikatową nazwę dla parametru
storageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Zezwól na zakończenie tego wdrożenia. Zgodnie z oczekiwaniami to wdrożenie kończy się powodzeniem. Lista dozwolonych wartości uniemożliwia użytkownikom szablonu przekazywanie wartości parametrów, które nie działają dla zasobu. Zobaczmy, co się stanie w przypadku podania nieprawidłowej jednostki SKU.
Uruchom następujące polecenia, aby wdrożyć szablon z niedozwolonym parametrem. Zmieniono parametr
storageSKU
na Podstawowa. Podaj unikatową nazwę dla parametrustorageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
To wdrożenie kończy się niepowodzeniem. Zwróć uwagę na błąd.
Dodawanie danych wyjściowych do szablonu usługi ARM
W tym miejscu dodasz do sekcji outputs
szablonu usługi Resource Manager kod umożliwiający wyprowadzenie informacji o punktach końcowych dla zasobu konta magazynu.
W pliku azuredeploy.json w programie Visual Studio Code umieść kursor wewnątrz nawiasów klamrowych w atrybucie
"outputs":{},
outputs .Naciśnij Enter, a następnie wprowadź wartość out. Zostanie wyświetlona lista powiązanych fragmentów kodu. Wybierz pozycję new-output. Dodaje ogólne dane wyjściowe do szablonu, który wygląda następująco:
"outputs": { "output1": { "type": "string", "value": "value" }
Zmień wartość "output1" na "storageEndpoint", a następnie zmień wartość
type
na "object". Zmień wartość navalue
"[reference(parameters('storageName')).primaryEndpoints]". To wyrażenie jest tym, które zostało opisane w poprzedniej lekcji, która pobiera dane punktu końcowego. Ponieważ określono obiekt jako typ, zwraca on obiekt w formacie JSON."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Zapisz plik.
Wdrażanie szablonu usługi ARM z danymi wyjściowymi
W tym miejscu wdrożysz szablon i zobaczysz dane wyjściowe z informacjami o punktach końcowych w formacie JSON. Musisz podać unikatową nazwę dla parametru storageName
. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.
Wdróż szablon, uruchamiając następujące polecenia. Pamiętaj, aby zastąpić frazę {your-unique-name} unikatowym ciągiem.
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}
Zwróć uwagę na dane wyjściowe.
Wdróż szablon, uruchamiając następujące polecenia. Pamiętaj, aby zastąpić frazę {your-unique-name} unikatowym ciągiem.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Zwróć uwagę na dane wyjściowe.
Sprawdzanie wdrożenia z danymi wyjściowymi
W witrynie Azure Portal przejdź do wdrożenia addOutputs. Możesz tu również znaleźć dane wyjściowe.