Ćwiczenie — redukowanie powtórzeń za pomocą kopiowania

Ukończone

W tym ostatnim ćwiczeniu będziesz nadal pracować z kontami magazynu. Tym razem użyjesz konstrukcji copy, aby aprowidować wiele kont magazynu z poziomu pojedynczej definicji.

Konstrukcja Copy udostępnia jedną centralną lokalizację, którą musisz aktualizować w przypadku zmiany wymagań.

Tworzenie szablonu usługi ARM

W tym miejscu utworzysz szablon usługi Azure Resource Manager (ARM), który definiuje zasób konta magazynu. Szablon używa elementu copy do tworzenia określonej liczby podobnych wersji tego samego zasobu.

  1. W programie Visual Studio Code utwórz plik o nazwie copy.json w tym samym katalogu, który zawiera plik azuredeploy.json.

  2. Dodaj tę zawartość do pliku copy.json:

    {
      "$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": {}
    }
    

Parametr storageCount definiuje liczbę kopii do utworzenia.

W obszarze resources zwróć uwagę na zasób konta magazynu. Aby nazwa konta magazynu była unikatowa, szablon używa elementu copyIndex() w celu dołączenia bieżącego indeksu do nazwy konta magazynu.

Sekcja copy odczytuje liczbę do wykonania w parametrze storageCount.

Wdrażanie szablonu

W tym miejscu wdrażasz szablon tak jak wcześniej. Krok wdrożenia powoduje ustanowienie dwóch podobnych kont magazynu.

  1. Utwórz zmienną programu PowerShell, która zawiera nazwę konta magazynu.

    $STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
    
  2. Uruchom następujące polecenie New-AzResourceGroupDeployment w celu wdrożenia szablonu:

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

    W tym miejscu ustawisz element storageCount na wartość 2, aby aprowidować dwa konta magazynu.

Weryfikowanie wdrożenia

Mimo że dane wyjściowe pokazują, że zostały utworzone dwa konta magazynu, w tym miejscu należy uruchomić polecenie Get-AzResource, aby skoncentrować się na zasobach wyjściowych.

Uruchom następujące polecenie Get-AzResource, aby upewnić się, że zasoby zostały wdrożone:

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

Argument tailwindsa* wskazuje, że mają zostać wyświetlone tylko identyfikatory pasujące do prefiksu nazwy, którą nadano zasobom.

Dane wyjściowe będą wyglądać mniej więcej tak:

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…

W tym przykładzie:

  • tailwindsa185277781 to nazwa bazowa wygenerowana dla konta magazynu ("tailwindsa" + Get-Random -Count 1).
  • tailwindsa1852777810 (nazwa bazowa i „0”) to pierwsze konto magazynu.
  • tailwindsa1852777811 (nazwa bazowa i „1”) to pierwsze konto magazynu.

Dobra robota! W miarę zmian potrzeb, takich jak wymagana warstwa wydajności, można modyfikować definicje zasobów z pojedynczej lokalizacji.

Czyszczenie

Piaskownica automatycznie czyści zasoby po zakończeniu pracy z tym modułem.

Jeśli pracujesz w ramach własnej subskrypcji, dobrym pomysłem po zakończeniu projektu jest sprawdzenie, czy dalej potrzebujesz utworzonych zasobów. Zasoby, które opuszczasz, mogą kosztować Pieniądze. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.

Tworzenie szablonu usługi ARM

W tym miejscu utworzysz szablon usługi Azure Resource Manager (ARM), który definiuje zasób konta magazynu. Szablon używa elementu copy do tworzenia określonej liczby podobnych wersji tego samego zasobu.

  1. W programie Visual Studio Code utwórz plik o nazwie copy.json w tym samym katalogu, który zawiera plik azuredeploy.json.

  2. Dodaj tę zawartość do pliku copy.json:

    {
      "$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": {}
    }
    

Parametr storageCount definiuje liczbę kopii do utworzenia.

W obszarze resources zwróć uwagę na zasób konta magazynu. Aby nazwa konta magazynu była unikatowa, szablon używa elementu copyIndex() w celu dołączenia bieżącego indeksu do nazwy konta magazynu.

Sekcja copy odczytuje liczbę do wykonania w parametrze storageCount.

Wdrażanie szablonu

W tym miejscu wdrażasz szablon tak jak wcześniej. Krok wdrożenia powoduje ustanowienie dwóch podobnych kont magazynu.

  1. Utwórz zmienną Bash, która zawiera nazwę konta magazynu.

    STORAGE_ACCT_NAME=tailwindsa$RANDOM
    
  2. Uruchom następujące polecenie az deployment group create w celu wdrożenia szablonu:

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

    W tym miejscu ustawisz element storageCount na wartość 2, aby aprowidować dwa konta magazynu.

Weryfikowanie wdrożenia

Mimo że dane wyjściowe pokazują, że zostały utworzone dwa konta magazynu, w tym miejscu należy uruchomić polecenie az deployment group show, aby skoncentrować się na zasobach wyjściowych.

Uruchom następujące polecenie az deployment group show, aby wyświetlić szczegóły wdrożenia:

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

Argument --query określa wskazuje, że mają zostać wyświetlone tylko identyfikatory z zasobów wyjściowych.

Dane wyjściowe będą wyglądać mniej więcej tak:

/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

W tym przykładzie:

  • tailwindsa982 to nazwa bazowa wygenerowana dla konta magazynu (tailwindsa$RANDOM).
  • tailwindsa9820 (nazwa bazowa i „0”) to pierwsze konto magazynu.
  • tailwindsa9821 (nazwa bazowa i „1”) to pierwsze konto magazynu.

Dobra robota! W miarę zmian potrzeb, takich jak wymagana warstwa wydajności, można modyfikować definicje zasobów z pojedynczej lokalizacji.

Czyszczenie

Piaskownica automatycznie czyści zasoby po zakończeniu pracy z tym modułem.

Jeśli pracujesz w ramach własnej subskrypcji, dobrym pomysłem po zakończeniu projektu jest sprawdzenie, czy dalej potrzebujesz utworzonych zasobów. Zasoby, które opuszczasz, mogą kosztować Pieniądze. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.