Обслуживание нескольких развертываний 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