Övning – Distribuera länkade och kapslade ARM-mallar
Kommentar
Första gången du aktiverar en sandbox-miljö och accepterar villkoren, associeras ditt Microsoft-konto med en ny Azure-katalog med namnet Microsoft Learn Sandbox. Du läggs till i en särskild prenumeration med namnet Concierge Subscription.
Här distribuerar du en mall som innehåller två länkade mallar i den angivna sandbox-miljön.
I den här övningen använder vi Azure Resource Manager Tools for Visual Studio Code. Installera tillägget i Visual Studio Code.
Konfigurera din testmiljö med den tillhandahållna Azure sandbox-prenumerationen
För att kunna utföra varje distribution i den här lektionen måste du logga in på ditt Azure-konto från Visual Studio Code-terminalen.
Se till att du loggar in till samma konto där sandbox-miljön aktiverades.
Logga in på Azure
Logga in i Azure genom att köra följande kommando från terminalen i Visual Studio Code. När du kör det här kommandot öppnas en webbläsare som gör att du kan logga in på ditt konto.
Connect-AzAccount
När du har loggat in visas en lista över de prenumerationer som är kopplade till kontot i terminalen. Om du har aktiverat sandbox-miljön ska Concierge-prenumerationen ingå i den här listan.
Skaffa prenumerations-ID:t. Följande kommando visar dina prenumerationer och deras ID:n i ett lättläst tabellformat. Prenumerations-ID är den andra kolumnen. Leta efter
Concierge Subscription
och kopiera den andra kolumnen. Det ser ut ungefär somaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Ändra din aktiva prenumeration till Concierge Subscription. Kom ihåg att ersätta
{Your subscription ID}
(Ditt prenumerations-ID) med ID för den Concierge-prenumeration som du hämtade med det föregående kommandot.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Ange standardresursgruppen
Du måste ange resursgruppen som skapades åt dig i sandbox-miljön som standardresursgrupp. För att kunna utföra den här åtgärden måste du först hämta resursgruppens namn med följande kommando:
Get-AzResourceGroup
I det här kommandot använder du det resursnamn som du fick från föregående kommando. Det ser ut ungefär som learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Med det här kommandot kan du utelämna den parametern från resten av Azure PowerShell-kommandona i den här övningen.
Kommentar
När du använder ett PowerShell- eller Azure CLI-kommando för att distribuera en mall måste du vanligtvis ange namnet på målresursgruppen. I övningarna i den här modulen åsidosätter vi det här kravet genom att ställa in kontexten för distributionen. Vi anger namnet på sandbox-resursgruppen i nästa steg med hjälp av PowerShell-kommandot Set-AzDefault.
Set-AzDefault -ResourceGroupName {Resource Group Name}
Distribuera en länkad mall
I den här övningen granskar och distribuerar vi en mall som innehåller två länkade mallar.
Om du vill lägga till en länkad mall i ARM-mallen lägger du till en
Microsoft.Resources/deployments
resurs och egenskapentemplateLink
som konfigurerats med mallens plats.Observera att två variabler definierar fjärranslutna eller externa mallar i en GitHub-lagringsplats i följande exempelmall.
Granska mallen och notera de
"type": "Microsoft.Resources/deployments"
avsnitt som definierar var och hur de länkade mallarna distribueras.Den första länkade mallen distribuerar ett lagringskonto. Den använder de överordnade parametrarna och distribuerar lagringsmallen.
Den andra länkade mallen är konfigurerad att vara beroende av lagringsdistributionen och att distribuera en mall för virtuellt nätverk.
{ "$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": {} }
Kopiera och klistra in innehållet från föregående mall i en fil i en lokal katalog. Använd till exempel
C:\JSON\linkedtemplate.json
.När du har sparat filen lokalt använder du följande PowerShell-kommando för att distribuera den på resursgruppsnivå som vi pratade om i den senaste lektionen. Det vill säga använd New-AzResourceGroupDeployment.
$templateFile="C:\JSON\linkedtemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLinkedTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
När den är klar bör du ha resultat som följande exmaple.
Verifiera resultatet.
Gå till Azure-portalen och kontrollera att du är i sandbox-prenumerationen. Det gör du genom att välja din avatar högst upp till höger på sidan. Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.
Välj Resursgrupper i panelen till vänster.
Välj
[resursgruppsnamn för sandbox-miljö] .I området Översikt ser du att distributionen lyckas. Välj 3 lyckades för att visa information om distributionen. (Det kan finnas fler slutförda distributioner beroende på om du har utfört övningarna i den föregående lektionen.)
Lägg märke till att du har distribuerat en mall, men att tre stycken visas i distributionsfönstret i portalen. Dessa tre distributioner motsvarar huvudmallen och de två länkade mallarna.
Logga in på Azure
Logga in i Azure genom att köra följande kommando från terminalen i Visual Studio Code. När du kör det här kommandot öppnas en webbläsare som gör att du kan logga in på ditt konto.
az login
När du har loggat in visas en JSON-lista över de prenumerationer som är kopplade till kontot i terminalen. Om du har aktiverat sandbox-miljön ska Concierge-prenumerationen ingå i den här listan.
Skaffa prenumerations-ID:t. Följande kommando visar dina prenumerationer och deras ID:n. Prenumerations-ID:t är den tredje kolumnen. Leta efter
Concierge Subscription
och kopiera den tredje kolumnen. Det ser ut ungefär somaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Ändra din aktiva prenumeration till Concierge Subscription. Kom ihåg att ersätta
{Your subscription ID}
(Ditt prenumerations-ID) med ID för den Concierge-prenumeration som du hämtade med det föregående kommandot.az account set -s {Your subscription ID}
Ange standardresursgruppen
Du måste ange resursgruppen som skapades åt dig i sandbox-miljön som standardresursgrupp. För att kunna utföra den här åtgärden måste du först hämta resursgruppens namn med följande kommando:
az group list -o table
I det här kommandot använder du namnet på den resursgrupp som du fick från föregående kommando. (Det ser ut ungefär som learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Om du anger den här standardinställningen kan du utelämna parametern från resten av Azure CLI-kommandona i den här övningen.
Kommentar
När du använder ett Azure CLI-kommando till att distribuera en mall måste du vanligtvis ange namnet på målresursgruppen. I övningarna i den här modulen åsidosätter vi det här kravet genom att ställa in kontexten för distributionen. Vi anger namnet på sandbox-resursgruppen i nästa steg med hjälp av Azure CLI-kommandot az configure.
az configure --defaults group={Resource Group Name}
Distribuera en länkad mall
I den här övningen granskar och distribuerar vi en mall som innehåller två länkade mallar.
Om du vill lägga till en länkad mall i ARM-mallen lägger du till en
Microsoft.Resources/deployments
resurs och egenskapentemplateLink
som konfigurerats med mallens plats.Observera att två variabler definierar fjärranslutna eller externa mallar i en GitHub-lagringsplats i följande exempelmall.
Granska mallen och notera de
"type": "Microsoft.Resources/deployments"
avsnitt som definierar var och hur de länkade mallarna distribueras.Den första länkade mallen distribuerar ett lagringskonto. Den använder de överordnade parametrarna och distribuerar lagringsmallen.
Den andra länkade mallen är konfigurerad att vara beroende av lagringsdistributionen och att distribuera en mall för virtuellt nätverk.
{ "$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": {} }
Kopiera och klistra in innehållet från föregående mall i en fil i en lokal katalog. Använd till exempel
C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json
.När du har sparat filen lokalt distribuerar du den på resursgruppsnivå med hjälp av följande Azure CLI-kommando. Det vill säga använd 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
När det är klart bör ditt resultat se ut som följande exempel. Kontrollera att distributionen har lyckats genom att granska värdet
"provisioningState"
.{- 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" }
Verifiera resultatet.
Gå till Azure-portalen och kontrollera att du är i sandbox-prenumerationen. Det gör du genom att välja din avatar högst upp till höger på sidan. Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.
Välj Resursgrupper i panelen till vänster.
Välj
[resursgruppsnamn för sandbox-miljö] .I området Översikt ser du att distributionen lyckades. Välj 3 lyckades för att visa information om distributionen. (Det kan finnas fler slutförda distributioner beroende på om du har utfört övningarna i den föregående lektionen.)
Lägg märke till att du har distribuerat en mall, men att tre stycken visas i distributionsfönstret i portalen. Dessa tre distributioner motsvarar huvudmallen och de två länkade mallarna.