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


Руководство по Использование файлов параметров для развертывания шаблона ARM

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

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

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

Необходимо установить 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": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "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]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Этот шаблон хорошо работает, но теперь вам нужно упростить управление параметрами, передаваемыми для шаблона.

Добавление файлов параметров

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

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

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

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

В Visual Studio Code создайте файл со следующим содержимым. Сохраните файл с именем azuredeploy.parameters.dev.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Это файл параметров для среды разработки. Обратите внимание, что он использует Standard_LRS в качестве учетной записи хранения, именует ресурсы с использованием префикса dev и задает для тега Environment значение Dev.

Опять же, создайте файл со следующим содержимым. Сохраните файл с именем azuredeploy.parameters.prod.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Это файл параметров для рабочей среды. Обратите внимание, что он использует Standard_GRS в качестве учетной записи хранения, именует ресурсы с применением префикса contoso и задает для тега Environmentзначение Production. В реальной рабочей среде вы вряд ли захотите использовать службу приложений ценовой категории "Бесплатный", но для целей этого учебника нам достаточно этой ценовой категории.

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

Для развертывания шаблона используйте либо Azure CLI, либо Azure PowerShell.

Для окончательной проверки шаблона создадим две группы ресурсов: для среды разработки и для рабочей среды.

Для переменных шаблона и параметров замените {path-to-the-template-file}, {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json} и фигурные скобки {} путями к файлам шаблона и параметров.

Сначала мы выполним развертывание в среде разработки.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Теперь мы выполним развертывание в рабочей среде.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Примечание

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

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

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

  1. Войдите на портал Azure.
  2. В меню слева выберите Группы ресурсов.
  3. Вы увидите две новые группы ресурсов, развернутые при работе с этим учебником.
  4. Выберите любую группу ресурсов и просмотрите развернутые ресурсы. Обратите внимание, что они соответствуют значениям, указанным в файле параметров для этой среды.

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

  1. На портале Azure в меню слева выберите Группы ресурсов.

  2. Щелкните имя группы ресурсов, дополненное гиперссылкой, рядом с этим флажком. Если вы поработали со всеми учебниками в этой серии, у вас есть три группы ресурсов для удаления — myResourceGroup, myResourceGroupDev и myResourceGroupProd.

  3. Щелкните значок Удалить группу ресурсов в верхней части меню.

    Внимание!

    Удаление группы ресурсов — процесс необратимый.

  4. Введите имя группы ресурсов в открывшемся всплывающем окне и щелкните Удалить.

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

Поздравляем. Вы завершили ознакомление с развертыванием шаблонов в Azure. Оставьте комментарии и предложения для нас в разделе отзывов.

В следующей серии руководств подробно рассматривается развертывание шаблонов.