Övning – Distribuera länkade och kapslade ARM-mallar

Slutförd

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

  1. 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
    
  2. 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.

  3. 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 som aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  4. Ä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.

  1. Om du vill lägga till en länkad mall i ARM-mallen lägger du till en Microsoft.Resources/deployments resurs och egenskapen templateLink som konfigurerats med mallens plats.

  2. 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": {}
    }
    
  3. 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.

  4. 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.

    Resultat från distribution av en länkad mall.

  5. Verifiera resultatet.

    1. 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.

    2. Välj Resursgrupper i panelen till vänster.

    3. Välj [resursgruppsnamn för sandbox-miljö].

    4. 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.)

    Gränssnittet på Azure-portalen för distributionerna, som visar att distributionen lyckades.

    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.

    Azure-portalnes gränssnitt för den angivna distributionen utan några listade resurser.

Logga in på Azure

  1. 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
    
  2. 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.

  3. 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 som aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    az account list -o table
    
  4. Ä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.

  1. Om du vill lägga till en länkad mall i ARM-mallen lägger du till en Microsoft.Resources/deployments resurs och egenskapen templateLink som konfigurerats med mallens plats.

  2. 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": {}
    }
    
  3. 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.

  4. 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"
    }
    
  5. Verifiera resultatet.

    1. 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.

    2. Välj Resursgrupper i panelen till vänster.

    3. Välj [resursgruppsnamn för sandbox-miljö].

    4. 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.)

    Gränssnittet på Azure-portalen för distributionerna, som visar att distributionen lyckades.

    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.

    Azure-portalnes gränssnitt för den angivna distributionen utan några listade resurser.