Ćwiczenie — dodawanie parametrów i danych wyjściowych do szablonu usługi Azure Resource Manager
W tym ćwiczeniu dodasz parametr, aby zdefiniować nazwę konta usługi Azure Storage 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. Dodasz również 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
W tym miejscu szablon usługi ARM będzie bardziej elastyczny, dodając parametry, które można ustawić 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 to tak:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Zmień parametr na 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 parametru powinien 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 będzie 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": [ { "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": {} }
Zapisz plik.
Wdrażanie sparametryzowanego szablonu usługi ARM
W tym miejscu zmienisz nazwę wdrożenia, aby lepiej odzwierciedlić to wdrożenie i wypełnić 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.
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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.
$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.
Dodawanie kolejnego parametru ograniczającego dozwolone wartości
W tym miejscu użyjesz parametrów, aby ograniczyć 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:
"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 są umieszczane wartości, na które zezwoli ten parametr. Jeśli szablon zostanie uruchomiony z niedozwoloną wartością, 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
. Ten krok ułatwi funkcja IntelliSense w programie Visual Studio Code."sku": { "name": "[parameters('storageSKU')]" }
Cały plik będzie 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": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]", "tier": "Standard" } } ], "outputs": {} }
Zapisz plik.
Wdrażanie szablonu usługi ARM
W tym miejscu wdrożysz pomyślnie 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 zakończy się niepowodzeniem zgodnie z oczekiwaniami.
Uruchom następujące polecenia, aby wdrożyć szablon. 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.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. Dozwolone wartości uniemożliwiają 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.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.
Uruchom następujące polecenia, aby wdrożyć szablon. 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.$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. Dozwolone wartości uniemożliwiają 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.$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 outputs
sekcji szablonu usługi ARM, aby wyświetlić punkty końcowe 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 klawisz Enter, a następnie wprowadź wartość out. Uzyskasz listę powiązanych fragmentów kodu. Wybierz pozycję new-output. Spowoduje to dodanie ogólnych danych wyjściowych do szablonu. Będzie to 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, zostanie zwrócony 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 punktów końcowych jako dane 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.
Uruchom następujące polecenia, aby wdrożyć szablon. 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.
Uruchom następujące polecenia, aby wdrożyć szablon. 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.