Поделиться через


Руководство по добавлению функций шаблона в шаблон ARM

Из этого учебника вы узнаете, как добавить функции шаблона в шаблон Azure Resource Manager (ARM). Функции используются для динамического создания значений. Помимо этих системных функций шаблонов можно также создать функции, определяемые пользователем. Для выполнения инструкций из этого учебника требуется 7 минут.

Предварительные требования

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

Вам потребуется установить Visual Studio Code с расширением инструментов Resource Manager,а также либо Azure PowerShell, либо Azure CLI. Дополнительные сведения см. в разделе об инструментах шаблона.

Проверка шаблона

В конце предыдущего учебника шаблон содержал следующий файл JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Предположим, что вы жестко закодировали расположение учетной записи хранения Azure в eastus, но его необходимо развернуть в другом регионе. Необходимо добавить параметр, чтобы сделать шаблон более гибким и разрешить ему использовать другое расположение.

Использование функции

Если вы выполняли упражнения в учебнике по параметрам, то вы использовали какую-то функцию. При добавлении "[parameters('storageName')]" использовалась функция parameters. Квадратные скобки указывают на то, что синтаксис внутри них — это выражение шаблона. Azure Resource Manager разрешает синтаксис и не рассматривает его как литеральное значение.

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

В следующем примере показаны изменения для добавления параметра location. Значение параметра по умолчанию вызывает функцию resourceGroup. Эта функция возвращает объект со сведениями о развернутой группе ресурсов. Одним из свойств объекта является свойство расположения. При использовании значения по умолчанию расположение учетной записи хранения совпадает с расположением группы ресурсов. Ресурсы внутри группы имеют разные расположения.

Скопируйте весь файл и замените шаблон на его содержимое.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

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

В предыдущих учебниках вы создали учетную запись хранения в восточной части США, но ваша группа ресурсов была создана в центральной части США. В этом учебнике учетная запись хранения создается в том же регионе, что и группа ресурсов. Используйте значение по умолчанию для расположения, чтобы не указывать значение этого параметра. Необходимо указать новое имя для учетной записи хранения, так как вы создаете ее в другом расположении. Например, используйте store2 в качестве префикса вместо store1.

Если вы еще не создали группу ресурсов, см. этот раздел. В этом примере предполагается, что для переменной templateFile указан путь к файлу шаблона, как показано в первом учебнике.

New-AzResourceGroupDeployment `
  -Name addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{new-unique-name}"

Примечание

Если развертывание завершается сбоем, используйте параметр verbose, чтобы получить сведения о создаваемых ресурсах. Используйте параметр debug, чтобы получить дополнительные сведения для отладки.

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

Чтобы проверить развертывание, просмотрите группу ресурсов на портале Azure.

  1. Войдите на портал Azure.
  2. В меню слева выберите Группы ресурсов.
  3. Установите флажок слева от myResourceGroup и выберите myResourceGroup.
  4. Выберите созданную ранее группу ресурсов. Имя по умолчанию — myResourceGroup.
  5. Обратите внимание, что развернутая учетная запись хранения и группа ресурсов имеют одинаковое расположение.

Очистка ресурсов

Если вы переходите к следующему учебнику, вам не нужно удалять группу ресурсов.

Если вы прекращаете работу, то можете удалить группу ресурсов.

  1. На портале Azure в меню слева выберите Группы ресурсов.
  2. Введите имя группы ресурсов в текстовое поле Фильтрация всех полей....
  3. Установите флажок рядом с myResourceGroup и выберите myResourceGroup или имя вашей группы ресурсов.
  4. В главном меню выберите Удалить группу ресурсов.

Дальнейшие действия

В этом учебнике при определении значения по умолчанию для параметра вы использовали функцию. В этой серии учебников вы по-прежнему будете использовать функции. К концу серии вы добавите функции в каждый раздел шаблона.