Übung: Verwenden von „copy“ zum Reduzieren der Wiederholung

Abgeschlossen

In dieser abschließenden Übung arbeiten Sie weiterhin mit Speicherkonten. Dieses Mal verwenden Sie das copy-Konstrukt, um mehrere Speicherkonten aus einer einzelnen Definition bereitzustellen.

Mit dem Copy-Konstrukt erhalten Sie einen einzelnen, zentralen Ort, den Sie aktualisieren müssen, wenn sich Ihre Anforderungen ändern.

Erstellen der ARM-Vorlage

Hier erstellen Sie eine ARM-Vorlage (Azure Resource Manager), die eine Speicherkontoressource definiert. Die Vorlage verwendet copy, um ähnliche Versionen derselben Ressource so oft wie angegeben zu erstellen.

  1. Erstellen Sie in Visual Studio Code eine Datei mit dem Namen copy.json in demselben Verzeichnis, das azuredeploy.json enthält.

  2. Fügen Sie diesen Inhalt copy.json hinzu:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts copies being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

Der Parameter storageCount definiert die Anzahl der zu erstellenden Kopien.

Notieren Sie sich unter resources die Speicherkontoressource. Um den Namen des Speicherkontos eindeutig zu machen, verwendet die Vorlage copyIndex(), um den aktuellen Index an den Speicherkontonamen anzufügen.

Der Abschnitt copy liest die Anzahl der Kopien, die zu erstellen sind, aus dem Parameter storageCount.

Bereitstellen der Vorlage

Hier stellen Sie die Vorlage wie bereits zuvor bereit. Mit dem Bereitstellungsschritt werden zwei ähnliche Speicherkonten bereitgestellt.

  1. Erstellen Sie eine PowerShell-Variable, die den Namen des Speicherkontos enthält.

    $STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
    
  2. Führen Sie den folgenden Befehl New-AzResourceGroupDeployment aus, um die Vorlage bereitzustellen:

    New-AzResourceGroupDeployment `
    -TemplateFile "./copy.json" `
    -storageAccountName $STORAGE_ACCT_NAME `
    -storageCount 2
    

    Hier legen Sie storageCount auf 2 fest, um zwei Speicherkonten bereitzustellen.

Überprüfen der Bereitstellung

Obwohl die Ausgabe zeigt, dass zwei Speicherkonten erstellt wurden, führen Sie hier den Befehl Get-AzResource aus, um sich auf die Ausgaberessourcen zu konzentrieren.

Führen Sie den folgenden Befehl Get-AzResource aus, um sicherzustellen,dass die Ressourcen bereitgestellt wurden:

Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId

Das tailwindsa*-Argument gibt an, dass nur die Bezeichner angezeigt werden, die mit dem Namenspräfix übereinstimmen, das Sie den Ressourcen zugewiesen haben.

Die Ausgabe sieht ungefähr wie folgt aus:

Name                 ResourceId
----                 ----------
tailwindsa1852777810 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
tailwindsa1852777811 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…

In diesem Beispiel:

  • tailwindsa185277781 ist der Basisname, der für das Speicherkonto ("tailwindsa" + Get-Random -Count 1) generiert wurde.
  • tailwindsa1852777810 (der Basisname plus „0“) ist das erste Speicherkonto.
  • tailwindsa1852777811 (der Basisname plus „1“) ist das zweite Speicherkonto.

Gut gemacht! Wenn sich Ihre Anforderungen ändern (z. B. die benötigte Leistungsstufe), können Sie Ihre Ressourcendefinitionen von einem einzigen Speicherort aus ändern.

Bereinigung

Die Sandbox bereinigt Ihre Ressourcen automatisch, wenn Sie dieses Modul abgeschlossen haben.

Wenn Sie in Ihrem eigenen Abonnement arbeiten, sollten Sie am Ende eines Projekts prüfen, ob Sie die Ressourcen, die Sie erstellt haben, noch benötigen. Ressourcen, die Sie weiterhin ausführen, können Sie Geld kosten. Sie können einzelne Ressourcen oder die gesamte Ressourcengruppe mit allen darin enthaltenen Ressourcen löschen.

Erstellen der ARM-Vorlage

Hier erstellen Sie eine ARM-Vorlage (Azure Resource Manager), die eine Speicherkontoressource definiert. Die Vorlage verwendet copy, um ähnliche Versionen derselben Ressource so oft wie angegeben zu erstellen.

  1. Erstellen Sie in Visual Studio Code eine Datei mit dem Namen copy.json in demselben Verzeichnis, das azuredeploy.json enthält.

  2. Fügen Sie diesen Inhalt copy.json hinzu:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

Der Parameter storageCount definiert die Anzahl der zu erstellenden Kopien.

Notieren Sie sich unter resources die Speicherkontoressource. Um den Namen des Speicherkontos eindeutig zu machen, verwendet die Vorlage copyIndex(), um den aktuellen Index an den Speicherkontonamen anzufügen.

Der Abschnitt copy liest die Anzahl der Kopien, die zu erstellen sind, aus dem Parameter storageCount.

Bereitstellen der Vorlage

Hier stellen Sie die Vorlage wie bereits zuvor bereit. Mit dem Bereitstellungsschritt werden zwei ähnliche Speicherkonten bereitgestellt.

  1. Erstellen Sie eine Bash-Variable, die den Namen des Speicherkontos enthält.

    STORAGE_ACCT_NAME=tailwindsa$RANDOM
    
  2. Führen Sie den folgenden Befehl az deployment group create aus, um die Vorlage bereitzustellen:

    az deployment group create \
      --template-file copy.json \
      --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
    

    Hier legen Sie storageCount auf 2 fest, um zwei Speicherkonten bereitzustellen.

Überprüfen der Bereitstellung

Obwohl die Ausgabe zeigt, dass zwei Speicherkonten erstellt wurden, führen Sie hier den Befehl az deployment group show aus, um sich auf die Ausgaberessourcen zu konzentrieren.

Führen Sie den folgenden Befehl az deployment group show aus, um Details zur Bereitstellung anzuzeigen:

az deployment group show \
  --name copy \
  --query "properties.outputResources[].id" \
  --output tsv

Das --query-Argument gibt an, dass nur die Bezeichner aus den Ausgaberessourcen angezeigt werden sollen.

Die Ausgabe sieht ungefähr wie folgt aus:

/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/4b328dc1-56b1-4031-89b0-c0898204f8a5/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821

In diesem Beispiel:

  • tailwindsa982 ist der Basisname, der für das Speicherkonto (tailwindsa$RANDOM) generiert wurde.
  • tailwindsa9820 (der Basisname plus „0“) ist das erste Speicherkonto.
  • tailwindsa9821 (der Basisname plus „1“) ist das zweite Speicherkonto.

Gut gemacht! Wenn sich Ihre Anforderungen ändern (z. B. die benötigte Leistungsstufe), können Sie Ihre Ressourcendefinitionen von einem einzigen Speicherort aus ändern.

Bereinigung

Die Sandbox bereinigt Ihre Ressourcen automatisch, wenn Sie dieses Modul abgeschlossen haben.

Wenn Sie in Ihrem eigenen Abonnement arbeiten, sollten Sie am Ende eines Projekts prüfen, ob Sie die Ressourcen, die Sie erstellt haben, noch benötigen. Ressourcen, die Sie weiterhin ausführen, können Sie Geld kosten. Sie können einzelne Ressourcen oder die gesamte Ressourcengruppe mit allen darin enthaltenen Ressourcen löschen.