Ćwiczenie — wdrażanie połączonych i zagnieżdżonych szablonów usługi ARM
Uwaga
Przy pierwszym aktywowaniu piaskownicy i zaakceptowaniu warunków konto Microsoft zostaje skojarzone z nowym katalogiem platformy Azure o nazwie Microsoft Learn Sandbox. Zostanie też do Ciebie przypisana specjalna subskrypcja o nazwie Subskrypcja Concierge.
W tym miejscu wdrożysz szablon zawierający dwa połączone szablony w podanym środowisku piaskownicy.
W tym ćwiczeniu używane są narzędzia usługi Azure Resource Manager dla programu Visual Studio Code. Pamiętaj, aby zainstalować to rozszerzenie w programie Visual Studio Code.
Konfigurowanie środowiska testowego za pomocą udostępnionej subskrypcji piaskownicy platformy Azure
Aby wykonać każde wdrożenie opisane w tej lekcji, należy zalogować się do konta platformy Azure z poziomu terminalu programu Visual Studio Code.
Zaloguj się na konto, którego użyto do aktywowania piaskownicy.
Logowanie się do platformy Azure
Z poziomu terminalu w programie Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure. Uruchomienie tego polecenia spowoduje otwarcie przeglądarki, która umożliwia zalogowanie się do konta.
Connect-AzAccount
Po zalogowaniu się w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem. Jeśli aktywowano piaskownicę, na liście powinna być widoczna subskrypcja Concierge.
Uzyskaj identyfikator subskrypcji. Poniższe polecenie wyświetla listę subskrypcji i ich identyfikatorów w łatwym do odczytania formacie tabeli. Identyfikatory subskrypcji znajdują się w drugiej kolumnie. Poszukaj subskrypcji
Concierge Subscription
i skopiuj wartość z drugiej kolumny. Wygląda to mniej więcej tak:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Zmień aktywną subskrypcję na subskrypcję Concierge. Pamiętaj, aby zastąpić ciąg
{Your subscription ID}
identyfikatorem subskrypcji Concierge uzyskanym w poprzednim poleceniu.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Ustawianie domyślnej grupy zasobów
Musisz teraz ustawić grupę zasobów utworzoną automatycznie w piaskownicy jako domyślną grupę zasobów. Aby wykonać tę operację, najpierw należy uzyskać nazwę grupy zasobów przy użyciu następującego polecenia:
Get-AzResourceGroup
W tym poleceniu użyj nazwy zasobu uzyskanej z poprzedniego polecenia. Wygląda to mniej więcej tak: learn-a73131a1-b618-48b8-af70-21af7ca420c4
. To polecenie umożliwia pominięcie tego parametru w pozostałych poleceniach programu Azure PowerShell w tym ćwiczeniu.
Uwaga
Zwykle w przypadku wdrażania szablonu za pomocą programu PowerShell lub polecenia interfejsu wiersza polecenia platformy Azure należy określić nazwę docelowej grupy zasobów. W ćwiczeniu w tym module pomijamy to wymaganie przez ustawienie kontekstu wdrożenia. W następnym kroku określamy nazwę grupy zasobów piaskownicy za pomocą polecenia Set-AzDefault programu PowerShell.
Set-AzDefault -ResourceGroupName {Resource Group Name}
Wdrażanie szablonu połączonego
W tym ćwiczeniu przejrzymy i wdrożymy szablon zawierający dwa połączone szablony.
Aby dodać połączony szablon do szablonu usługi ARM, dodaj
Microsoft.Resources/deployments
zasób itemplateLink
właściwość skonfigurowaną z lokalizacją szablonu.W poniższym przykładowym szablonie zwróć uwagę, że dwie zmienne definiują szablony zdalne lub zewnętrzne znajdujące się w repozytorium GitHub.
Przejrzyj szablon i zanotuj
"type": "Microsoft.Resources/deployments"
sekcje definiujące miejsce i sposób wdrażania połączonych szablonów.Pierwszy połączony szablon wdraża konto magazynu. Przetwarza on parametry nadrzędne i wdraża szablon magazynu.
Drugi połączony szablon jest skonfigurowany w taki sposób, aby był zależny od wdrożenia magazynu oraz aby wdrażał szablon sieci wirtualnej.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Skopiuj i wklej zawartość poprzedniego szablonu do pliku w katalogu lokalnym. Na przykład użyj
C:\JSON\linkedtemplate.json
.Po zapisaniu pliku lokalnie użyj następującego polecenia programu PowerShell, aby wdrożyć go na poziomie grupy zasobów, o którym mówiliśmy w ostatniej lekcji. Mianowicie użyj polecenia New-AzResourceGroupDeployment.
$templateFile="C:\JSON\linkedtemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLinkedTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Po zakończeniu powinny pojawić się wyniki podobne do poniższych.
Zweryfikuj wyniki.
Przejdź do witryny Azure Portal i upewnij się, że znajdujesz się w subskrypcji piaskownicy. W tym celu wybierz swój awatar w prawym górnym rogu strony. Wybierz pozycję Przełącz katalog. Z listy wybierz katalog Microsoft Learn Sandbox.
W panelu po lewej stronie wybierz pozycję Grupy zasobów.
Wybierz pozycję
[nazwa grupy zasobów piaskownicy] .W obszarze Przegląd zobaczysz, że wdrożenie zakończy się pomyślnie. Wybierz pozycję 3 udane, aby wyświetlić szczegóły wdrożenia. (W zależności od tego, czy wykonano ćwiczenia z poprzedniej lekcji, wdrożenie może być bardziej kompleksowe).
Zauważ, że wdrożono jeden szablon, ale w okienku wdrażania w portalu są wymienione trzy szablony. Te trzy wdrożenia odpowiadają szablonowi głównemu i dwóm połączonym szablonom.
Logowanie się do platformy Azure
Z poziomu terminalu w programie Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure. Uruchomienie tego polecenia spowoduje otwarcie przeglądarki, która umożliwia zalogowanie się do konta.
az login
Po zalogowaniu się w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z kontem w formacie JSON. Jeśli aktywowano piaskownicę, na liście powinna być widoczna subskrypcja Concierge.
Uzyskaj identyfikator subskrypcji. Poniższe polecenie wyświetla listę subskrypcji i ich identyfikatorów. Identyfikator subskrypcji znajduje się w trzeciej kolumnie. Poszukaj subskrypcji
Concierge Subscription
i skopiuj wartość z trzeciej kolumny. Wygląda to mniej więcej tak:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Zmień aktywną subskrypcję na subskrypcję Concierge. Pamiętaj, aby zastąpić ciąg
{Your subscription ID}
identyfikatorem subskrypcji Concierge uzyskanym w poprzednim poleceniu.az account set -s {Your subscription ID}
Ustawianie domyślnej grupy zasobów
Musisz teraz ustawić grupę zasobów utworzoną automatycznie w piaskownicy jako domyślną grupę zasobów. Aby wykonać tę operację, najpierw należy uzyskać nazwę grupy zasobów przy użyciu następującego polecenia:
az group list -o table
W tym poleceniu użyj nazwy grupy zasobów, która została uzyskana z poprzedniego polecenia. (Wygląda to mniej więcej tak: learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Ustawienie tej wartości domyślnej umożliwia pominięcie tego parametru z pozostałych poleceń interfejsu wiersza polecenia platformy Azure w tym ćwiczeniu.
Uwaga
Zwykle w przypadku wdrażania szablonu za pomocą polecenia interfejsu wiersza polecenia platformy Azure należy określić nazwę docelowej grupy zasobów. W ćwiczeniu w tym module pomijamy to wymaganie przez ustawienie kontekstu wdrożenia. W następnym kroku określamy nazwę grupy zasobów piaskownicy za pomocą polecenia az configure interfejsu wiersza polecenia platformy Azure.
az configure --defaults group={Resource Group Name}
Wdrażanie szablonu połączonego
W tym ćwiczeniu przejrzymy i wdrożymy szablon zawierający dwa połączone szablony.
Aby dodać połączony szablon do szablonu usługi ARM, dodaj
Microsoft.Resources/deployments
zasób itemplateLink
właściwość skonfigurowaną z lokalizacją szablonu.W poniższym przykładowym szablonie zwróć uwagę, że dwie zmienne definiują szablony zdalne lub zewnętrzne znajdujące się w repozytorium GitHub.
Przejrzyj szablon i zanotuj
"type": "Microsoft.Resources/deployments"
sekcje definiujące miejsce i sposób wdrażania połączonych szablonów.Pierwszy połączony szablon wdraża konto magazynu. Przetwarza on parametry nadrzędne i wdraża szablon magazynu.
Drugi połączony szablon jest skonfigurowany w taki sposób, aby był zależny od wdrożenia magazynu oraz aby wdrażał szablon sieci wirtualnej.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Skopiuj i wklej zawartość poprzedniego szablonu do pliku w katalogu lokalnym. Na przykład użyj
C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json
.Po zapisaniu tego pliku lokalnie wdróż go na poziomie grupy zasobów przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure. To polecenie to az deployment group create.
templateFile=/mnt/c/Users/<UserName>/json/linkedtemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
Wynik wyświetlony po zakończeniu wykonywania polecenia powinien wyglądać podobnie jak na poniższym przykładzie. Sprawdź wartość
"provisioningState"
, aby upewnić się, że wdrożenie zakończyło się pomyślnie.{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [ { "dependsOn": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/storage", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "storage", "resourceType": "Microsoft.Resources/deployments" } ], "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/identity", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "identity", "resourceType": "Microsoft.Resources/deployments" } ], "duration": "PT16.4639167S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/virtualNetworks/vnet-001", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }, { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" } ], "outputs": {}, "parameters": { "name": { "type": "String", "value": "linkeddemo001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Resources", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ null ], "properties": null, "resourceType": "deployments" } ] } ], "provisioningState": "Succeeded", "templateHash": "12700491000282730217", "templateLink": null, "timestamp": "2020-08-19T21:07:18.729310+00:00", "validatedResources": null }, "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "tags": null, "type": "Microsoft.Resources/deployments" }
Zweryfikuj wyniki.
Przejdź do witryny Azure Portal i upewnij się, że znajdujesz się w subskrypcji piaskownicy. W tym celu wybierz swój awatar w prawym górnym rogu strony. Wybierz pozycję Przełącz katalog. Z listy wybierz katalog Microsoft Learn Sandbox.
W panelu po lewej stronie wybierz pozycję Grupy zasobów.
Wybierz pozycję
[nazwa grupy zasobów piaskownicy] .W obszarze Przegląd zobaczysz, że wdrożenie zakończyło się pomyślnie. Wybierz pozycję 3 udane, aby wyświetlić szczegóły wdrożenia. (W zależności od tego, czy wykonano ćwiczenia z poprzedniej lekcji, wdrożenie może być bardziej kompleksowe).
Zauważ, że wdrożono jeden szablon, ale w okienku wdrażania w portalu są wymienione trzy szablony. Te trzy wdrożenia odpowiadają szablonowi głównemu i dwóm połączonym szablonom.