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


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

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

Предпосылки

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

Вам потребуется Visual Studio Code и 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": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-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": "2025-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 и задает тег в EnvironmentProduction. В реальной рабочей среде вы также хотите использовать службу приложений с номером SKU, отличной от бесплатной, но мы используем этот номер SKU для этого руководства.

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

Используйте 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. Щелкните значок "Удалить группу ресурсов " в верхнем меню.

    Caution

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

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

Дальнейшие шаги

Поздравляю. Вы завершили это введение в развертывание шаблонов в Azure. Сообщите нам, есть ли у вас комментарии и предложения в разделе отзывов.

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