Упражнение. Использование элемента copy для сокращения числа повторяемых элементов

Завершено

В этом заключительном упражнении вы продолжите работать с учетными записями хранения. На этот раз вы используете конструкцию copy для инициализации нескольких учетных записей хранения из одного определения.

Конструкция Copy является единым объектом, который необходимо обновить при изменении требований.

Создание шаблона ARM

Здесь вы создаете шаблон Azure Resource Manager (ARM), который определяет ресурс учетной записи хранения. Шаблон использует конструкцию copy для создания аналогичных версий одного и того же ресурса заданное число раз.

  1. В Visual Studio Code создайте файл с именем copy.json в том же каталоге, который содержит azuredeploy.json.

  2. Добавьте это содержимое в 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": {}
    }
    

Параметр storageCount определяет количество создаваемых копий.

В разделе resourcesотметьте ресурс учетной записи хранения. Чтобы имя учетной записи хранения было уникальным, шаблон использует параметр copyIndex(), чтобы добавить текущий индекс в имя учетной записи хранения.

Раздел copy считывает количество копий, которое необходимо создать, из параметра storageCount.

Развертывание шаблона

Здесь вы развернете шаблон так, как вы уже это делали ранее. Этап развертывания подготавливает две аналогичные учетные записи хранения.

  1. Создайте переменную PowerShell, содержащую имя учетной записи хранения.

    $STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
    
  2. Чтобы развернуть шаблон, выполните приведенную ниже команду New-AzResourceGroupDeployment.

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

    Здесь вы задаете для параметра storageCount значение 2, чтобы подготовить две учетные записи хранения.

Проверка развертывания

Хотя в выходных данных показано, что созданы две учетные записи хранения, выполните команду Get-AzResource, чтобы перейти к выходным ресурсам.

Выполните следующую команду Get-AzResource, чтобы убедиться, что ресурсы были развернуты:

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

Аргумент tailwindsa* задает отображение только идентификаторов, соответствующих префиксу имени, присвоенного ресурсам.

Результат будет примерно таким:

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…

В этом примере:

  • tailwindsa185277781 — это базовое имя, созданное для учетной записи хранения ("tailwindsa" + Get-Random -Count 1).
  • tailwindsa1852777810 (базовое имя плюс "0") — это первая учетная запись хранения.
  • tailwindsa1852777811 (базовое имя плюс "1") — это вторая учетная запись хранения.

Отлично! По мере изменения ваших потребностей, например необходимого уровня производительности, можно изменить определения ресурсов из одного расположения.

Очистка

Когда вы завершите работу с этим модулем, песочница автоматически очистит ваши ресурсы.

Если вы работаете в собственной подписке, в конце проекта следует решить, нужны ли вам созданные ресурсы. Оставленные работающими ресурсы могут создавать затраты. Вы можете удалить ресурсы по отдельности либо удалить всю группу ресурсов.

Создание шаблона ARM

Здесь вы создаете шаблон Azure Resource Manager (ARM), который определяет ресурс учетной записи хранения. Шаблон использует конструкцию copy для создания аналогичных версий одного и того же ресурса заданное число раз.

  1. В Visual Studio Code создайте файл с именем copy.json в том же каталоге, который содержит azuredeploy.json.

  2. Добавьте это содержимое в 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": {}
    }
    

Параметр storageCount определяет количество создаваемых копий.

В разделе resourcesотметьте ресурс учетной записи хранения. Чтобы имя учетной записи хранения было уникальным, шаблон использует параметр copyIndex(), чтобы добавить текущий индекс в имя учетной записи хранения.

Раздел copy считывает количество копий, которое необходимо создать, из параметра storageCount.

Развертывание шаблона

Здесь вы развернете шаблон так, как вы уже это делали ранее. Этап развертывания подготавливает две аналогичные учетные записи хранения.

  1. Создайте переменную Bash, содержащую имя учетной записи хранения.

    STORAGE_ACCT_NAME=tailwindsa$RANDOM
    
  2. Чтобы развернуть шаблон, выполните приведенную ниже команду az deployment group create.

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

    Здесь вы задаете для параметра storageCount значение 2, чтобы подготовить две учетные записи хранения.

Проверка развертывания

Хотя в выходных данных показано, что созданы две учетные записи хранения, выполните команду az deployment group show, чтобы перейти к выходным ресурсам.

Выполните следующую команду az deployment group show, чтобы отобразить сведения о развертывании:

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

Аргумент --query задает отображение только идентификаторов из выходных ресурсов.

Результат будет примерно таким:

/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

В этом примере:

  • tailwindsa982 — это базовое имя, созданное для учетной записи хранения (tailwindsa$RANDOM).
  • tailwindsa9820 (базовое имя плюс "0") — это первая учетная запись хранения.
  • tailwindsa9821 (базовое имя плюс "1") — это вторая учетная запись хранения.

Отлично! По мере изменения ваших потребностей, например необходимого уровня производительности, можно изменить определения ресурсов из одного расположения.

Очистка

Когда вы завершите работу с этим модулем, песочница автоматически очистит ваши ресурсы.

Если вы работаете в собственной подписке, в конце проекта следует решить, нужны ли вам созданные ресурсы. Оставленные работающими ресурсы могут создавать затраты. Вы можете удалить ресурсы по отдельности либо удалить всю группу ресурсов.