Übung: Bereitstellen von verknüpften und geschachtelten ARM-Vorlagen

Abgeschlossen

Hinweis

Wenn Sie zum ersten Mal eine Sandbox aktivieren und die Bedingungen akzeptieren, ist Ihr Microsoft-Konto einem neuen Azure-Verzeichnis mit dem Namen „Microsoft Learn Sandbox“ zugeordnet. Sie werden zu einem speziellen Abonnement mit der Bezeichnung „Concierge-Abonnement“ hinzugefügt.

Hier stellen Sie eine Vorlage in der bereitgestellten Sandboxumgebung bereit, die zwei verknüpfte Vorlagen enthält.

In dieser Übung werden die Azure Resource Manager-Tools für Visual Studio Code verwendet. Stellen Sie sicher, dass Sie diese Erweiterung in Visual Studio Code installieren.

Einrichten der Testumgebung mit dem angegebenen Azure-Sandboxabonnement

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um die einzelnen Bereitstellungen in dieser Einheit durchführen zu können.

Achten Sie darauf, dass Sie sich bei demselben Konto anmelden, über das die Sandbox aktiviert wurde.

Anmelden bei Azure

  1. Führen Sie im Terminal in Visual Studio Code den folgenden Befehl aus, um sich bei Azure anzumelden. Wenn Sie diesen Befehl ausführen, wird ein Browser geöffnet, in dem Sie sich bei Ihrem Konto anmelden können:

    Connect-AzAccount
    
  2. Sobald Sie angemeldet sind, wird im Terminal eine Liste der Abonnements angezeigt, die mit diesem Konto verknüpft sind. Wenn Sie die Sandbox aktiviert haben, sollte das Concierge-Abonnement in dieser Liste enthalten sein.

  3. Rufen Sie die Abonnement-ID ab. Der folgende Befehl listet Ihre Abonnements und deren IDs in einem leicht lesbaren Tabellenformat auf. Die Abonnement-ID befindet sich in der zweiten Spalte. Suchen Sie nach Concierge Subscription, und kopieren Sie die zweite Spalte. Der Wert sollte etwa wie folgt aussehen: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  4. Ändern Sie Ihr aktives Abonnement in „Concierge Subscription“. Stellen Sie sicher, dass Sie {Your subscription ID} durch die ID des Concierge-Abonnements ersetzen, die Sie mithilfe des letzten Befehls abgerufen haben.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Festlegen der Standardressourcengruppe

Sie müssen jetzt die für Sie in der Sandbox erstellte Ressourcengruppe als Standardressourcengruppe festlegen. Sie müssen zunächst den Ressourcengruppenname mithilfe des folgenden Befehls abrufen, um diesen Vorgang durchzuführen:

Get-AzResourceGroup

Verwenden Sie in diesem Befehl den Ressourcennamen, den Sie mithilfe des vorherigen Befehls abgerufen haben. Der Wert sollte etwa wie folgt aussehen: learn-a73131a1-b618-48b8-af70-21af7ca420c4. Mithilfe dieses Befehls können Sie den Parameter aus den restlichen Azure PowerShell-Befehlen in dieser Übung auslassen.

Hinweis

Wenn Sie einen PowerShell- oder Azure CLI-Befehl zum Bereitstellen einer Vorlage verwenden, müssen Sie normalerweise den Namen der Zielressourcengruppe angeben. In dieser Übung dieses Moduls wird diese Anforderung umgangen, indem der Kontext der Bereitstellung festgelegt wird. Im nächsten Schritt wird der Name der Sandbox-Ressourcengruppe mithilfe des PowerShell-Befehls Set-AzDefault festgelegt.

Set-AzDefault -ResourceGroupName {Resource Group Name}

Bereitstellen als verknüpfte Vorlage

In dieser Übung untersuchen Sie eine Vorlage, die zwei verknüpfte Vorlagen enthält, und stellen sie bereit.

  1. Um Ihrer ARM-Vorlage eine verknüpfte Vorlage hinzuzufügen, fügen Sie eine Ressource Microsoft.Resources/deployments und die Eigenschaft templateLink hinzu, die mit dem Speicherort der Vorlage konfiguriert ist.

  2. Beachten Sie in der folgenden Beispielvorlage, dass zwei Variablen verwendet werden, die Remote- oder externe Vorlagen definieren, die sich in einem GitHub-Repository befinden:

    Überprüfen Sie die Vorlage, und notieren Sie sich die "type": "Microsoft.Resources/deployments" Abschnitte, in denen definiert wird, wo und wie die verknüpften Vorlagen bereitgestellt werden.

    Die erste verknüpfte Vorlage stellt ein Speicherkonto bereit. Dabei werden die übergeordneten Parameter verwendet, und die Speichervorlage wird bereitgestellt.

    Die zweite verknüpfte Vorlage ist so konfiguriert, dass sie von der Speicherbereitstellung abhängt und eine Vorlage für ein virtuelles Netzwerk bereitstellt.

    {
    "$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. Kopieren Sie den Inhalt der vorherigen Vorlage, und fügen Sie diesen in eine Datei in einem lokalen Verzeichnis ein. Verwenden Sie beispielsweise C:\JSON\linkedtemplate.json.

  4. Nachdem Sie die Datei lokal gespeichert haben, verwenden Sie den folgenden PowerShell-Befehl, um sie auf der Ressourcengruppenebene bereitzustellen, die in der letzten Lerneinheit behandelt wurde. Verwenden Sie den Befehl New-AzResourceGroupDeployment.

        $templateFile="C:\JSON\linkedtemplate.json"
        $today=Get-Date -Format "MM-dd-yyyy"
        $DeploymentName="DeployLinkedTemplate-"+"$today"
    
        New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile
    

    Sobald dieser Vorgang abgeschlossen ist, sollten Sie über Ergebnisse verfügen, die dem folgenden Beispiel ähneln.

    Ergebnisse aus der Bereitstellung einer verknüpften Vorlage.

  5. Überprüfen Sie die Ergebnisse:

    1. Rufen Sie das Azure-Portal auf, und stellen Sie sicher, dass Sie sich im Sandboxabonnement befinden. Wählen Sie hierzu Ihren Avatar in der oberen rechten Ecke der Seite aus. Klicken Sie dann auf Verzeichnis wechseln. Wählen Sie in der Liste das Verzeichnis Microsoft Learn Sandbox aus.

    2. Klicken Sie im linken Bereich auf Ressourcengruppen.

    3. Wählen Sie [Name der Sandboxressourcengruppe] aus.

    4. Im Bereich Übersicht sollten Sie sehen, dass die Bereitstellung erfolgreich durchgeführt wurde. Klicken Sie auf 3 Succeeded (3 Erfolgreich), um die Details der Bereitstellung anzuzeigen. (Je nachdem, ob Sie die Übungen der vorherigen Lerneinheit durchgeführt haben, werden möglicherweise weitere abgeschlossene Bereitstellungen angezeigt.)

    Azure-Portalschnittstelle für die Bereitstellungen mit einer aufgelisteten Bereitstellung und dem Status „Erfolgreich“.

    Beachten Sie, dass Sie eine Vorlage bereitgestellt haben, jedoch werden drei Vorlagen im Bereitstellungsbereich des Portals aufgeführt. Diese drei Bereitstellungen entsprechen der Hauptvorlage und den beiden verknüpften Vorlagen.

    Azure-Portalschnittstelle für die spezifische Bereitstellung ohne aufgelistete Ressourcen.

Anmelden bei Azure

  1. Führen Sie im Terminal in Visual Studio Code den folgenden Befehl aus, um sich bei Azure anzumelden. Wenn Sie diesen Befehl ausführen, wird ein Browser geöffnet, in dem Sie sich bei Ihrem Konto anmelden können:

    az login
    
  2. Sobald Sie angemeldet sind, wird im Terminal eine JSON-Liste der Abonnements angezeigt, die mit diesem Konto verknüpft sind. Wenn Sie die Sandbox aktiviert haben, sollte das Concierge-Abonnement in dieser Liste enthalten sein.

  3. Rufen Sie die Abonnement-ID ab. Mit dem folgenden Befehl werden Ihre Abonnements und deren IDs aufgelistet. Die Abonnement-ID befindet sich in der dritten Spalte. Suchen Sie nach Concierge Subscription, und kopieren Sie die dritte Spalte. Der Wert sollte etwa wie folgt aussehen: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    az account list -o table
    
  4. Ändern Sie Ihr aktives Abonnement in „Concierge Subscription“. Stellen Sie sicher, dass Sie {Your subscription ID} durch die ID des Concierge-Abonnements ersetzen, die Sie mithilfe des letzten Befehls abgerufen haben.

    az account set -s {Your subscription ID}
    

Festlegen der Standardressourcengruppe

Sie müssen jetzt die für Sie in der Sandbox erstellte Ressourcengruppe als Standardressourcengruppe festlegen. Sie müssen zunächst den Ressourcengruppenname mithilfe des folgenden Befehls abrufen, um diesen Vorgang durchzuführen:

az group list -o table

Verwenden Sie in diesem Befehl den Ressourcennamen, den Sie mithilfe des vorherigen Befehls abgerufen haben. (Dieser Name sollte in etwa wie folgt aussehen: learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Mithilfe dieses Befehls können Sie den Parameter aus den restlichen Azure CLI-Befehlen in dieser Übung auslassen.

Hinweis

Wenn Sie einen Azure CLI-Befehl zum Bereitstellen einer Vorlage verwenden, müssen Sie normalerweise den Namen der Zielressourcengruppe angeben. In dieser Übung dieses Moduls wird diese Anforderung umgangen, indem der Kontext der Bereitstellung festgelegt wird. Im nächsten Schritt wird der Name der Sandbox-Ressourcengruppe mithilfe des Azure CLI-Befehls az configure festgelegt.

az configure --defaults group={Resource Group Name}

Bereitstellen als verknüpfte Vorlage

In dieser Übung untersuchen Sie eine Vorlage, die zwei verknüpfte Vorlagen enthält, und stellen sie bereit.

  1. Um Ihrer ARM-Vorlage eine verknüpfte Vorlage hinzuzufügen, fügen Sie eine Ressource Microsoft.Resources/deployments und die Eigenschaft templateLink hinzu, die mit dem Speicherort der Vorlage konfiguriert ist.

  2. Beachten Sie in der folgenden Beispielvorlage, dass zwei Variablen verwendet werden, die Remote- oder externe Vorlagen definieren, die sich in einem GitHub-Repository befinden:

    Überprüfen Sie die Vorlage, und notieren Sie sich die "type": "Microsoft.Resources/deployments" Abschnitte, in denen definiert wird, wo und wie die verknüpften Vorlagen bereitgestellt werden.

    Die erste verknüpfte Vorlage stellt ein Speicherkonto bereit. Dabei werden die übergeordneten Parameter verwendet, und die Speichervorlage wird bereitgestellt.

    Die zweite verknüpfte Vorlage ist so konfiguriert, dass sie von der Speicherbereitstellung abhängt und eine Vorlage für ein virtuelles Netzwerk bereitstellt.

    {
    "$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. Kopieren Sie den Inhalt der vorherigen Vorlage, und fügen Sie diesen in eine Datei in einem lokalen Verzeichnis ein. Verwenden Sie beispielsweise C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json.

  4. Nachdem Sie die Datei lokal gespeichert haben, stellen Sie diese auf der Ressourcengruppenebene bereit, indem Sie den folgenden Azure CLI-Befehl verwenden. Verwenden Sie den Befehl 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
    

    Sobald dieser Vorgang abgeschlossen ist, sollten Sie über Ergebnisse verfügen, die dem folgenden Beispiel ähneln. Überprüfen Sie den Wert "provisioningState", um sicherzustellen, dass die Bereitstellung erfolgreich abgeschlossen wurde.

    {- Finished ..
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-3-2020-08-19",
      "properties": {
        "correlationId": "f127f689-badf-4063-ad55-dff549e63e48",
        "debugSetting": null,
        "dependencies": [
          {
            "dependsOn": [
              {
                "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/storage",
                "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
                "resourceName": "storage",
                "resourceType": "Microsoft.Resources/deployments"
              }
            ],
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/identity",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
            "resourceName": "identity",
            "resourceType": "Microsoft.Resources/deployments"
          }
        ],
        "duration": "PT16.4639167S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Network/virtualNetworks/vnet-001",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
          },
          {
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
          }
        ],
        "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-159e2742-d3a1-4e71-84a3-16e19830242b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    
  5. Überprüfen Sie die Ergebnisse:

    1. Rufen Sie das Azure-Portal auf, und stellen Sie sicher, dass Sie sich im Sandboxabonnement befinden. Wählen Sie hierzu Ihren Avatar in der oberen rechten Ecke der Seite aus. Klicken Sie dann auf Verzeichnis wechseln. Wählen Sie in der Liste das Verzeichnis Microsoft Learn Sandbox aus.

    2. Klicken Sie im linken Bereich auf Ressourcengruppen.

    3. Wählen Sie [Name der Sandboxressourcengruppe] aus.

    4. Im Bereich Übersicht sollten Sie sehen, dass die Bereitstellung erfolgreich durchgeführt wurde. Klicken Sie auf 3 Succeeded (3 Erfolgreich), um die Details der Bereitstellung anzuzeigen. (Je nachdem, ob Sie die Übungen der vorherigen Lerneinheit durchgeführt haben, werden möglicherweise weitere abgeschlossene Bereitstellungen angezeigt.)

    Azure-Portalschnittstelle für die Bereitstellungen mit einer aufgelisteten Bereitstellung und dem Status „Erfolgreich“.

    Beachten Sie, dass Sie eine Vorlage bereitgestellt haben, jedoch werden drei Vorlagen im Bereitstellungsbereich des Portals aufgeführt. Diese drei Bereitstellungen entsprechen der Hauptvorlage und den beiden verknüpften Vorlagen.

    Azure-Portalschnittstelle für die spezifische Bereitstellung ohne aufgelistete Ressourcen.