Поддержка нескольких развертываний Azure с помощью тегов и файлов параметров шаблона Azure Resource Manager

Завершено

Существует две функции шаблонов Azure Resource Manager (ARM), которые необходимо использовать при развертывании в нескольких средах Azure. Это теги ресурсов и файлы параметров шаблона ARM.

При добавлении дополнительных ресурсов в среды вы быстро обнаружите, что вам нужен способ определения цели этих ресурсов. Для этого ресурсы имеют атрибут tags:. При развертывании в дополнительных средах требуется эффективный способ отслеживания входных параметров. Шаблоны ARM могут использовать файлы параметров для управления параметрами каждой среды развертывания.

Что собой представляет тег ресурса Azure?

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

Значение тега отображается на странице обзора ресурса Azure и в отчетах о затратах.

Создание тега ресурса Azure

Каждый ресурс имеет атрибут tags:. До сих пор вы использовали displayName по умолчанию для тега своей учетной записи хранения:

"tags": {
          "displayName": "[parameters('storageName')]"
        },

Чтобы сделать этот атрибут более полезным, можно определить параметр с дополнительными сведениями, а затем использовать этот параметр в атрибуте tags:. Например, можно создать параметр для хранения объекта с именем resourceTags:

"resourceTags": {
    "type": "object",
    "defaultValue": {
        "Environment": "Dev",
        "Project": "Inventory"
        }
    }

Здесь вы создали объект для хранения значений для имени среды и имени проекта, но вы можете определить все, что вы хотите.

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

"resources": [{
        "name": "[variables('uniqueStorageName')]",
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2019-06-01",
        "tags": "[parameters('resourceTags')]",
        ...
    }],

Что такое файл параметров шаблона ARM?

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

Использование файлов параметров шаблона ARM

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

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

Затем можно создать аналогичный файл для каждой среды. Например, эти файлы могут называться azuredeploy.parameters.dev.json и azuredeploy.parameters.prod.json и содержать различные значения для параметров.

Чтобы развернуть шаблон ARM с помощью файла параметров, укажите путь к файлу параметров в команде развертывания. В Azure CLI используется --parameters {path to parameter file}. В PowerShell используется -TemplateParameterFile {path to parameter file}.

templateFile="{path-to-the-template-file}"
devParameterFile="{path-to-azuredeploy.parameters.dev.json}"
az group create \
  --name myResourceGroupDev \
  --location "East US"
az deployment group create \
  --name devenvironment \
  --resource-group myResourceGroupDev \
  --template-file $templateFile \
  --parameters $devParameterFile