Manter várias implantações do Azure usando marcas de modelo e arquivos de parâmetro do Azure Resource Manager

Concluído

Há dois recursos dos modelos do Azure Resource Manager (ARM) que você deseja usar ao implantar em mais de um ambiente do Azure. Esses recursos são tags de recursos e arquivos de parâmetros de modelo ARM.

À medida que você adiciona mais recursos aos seus ambientes, rapidamente descobre que precisa de uma maneira de identificar a finalidade desses recursos. Os recursos têm um atributo tags: para esta finalidade. À medida que você implanta em mais ambientes, você precisa de uma maneira eficiente de acompanhar os parâmetros de entrada. Os modelos ARM podem usar arquivos de parâmetros para gerenciar parâmetros para cada ambiente de implantação.

O que é uma marca de recurso do Azure?

Você pode marcar recursos para adicionar valores que ajudam a identificar seu uso. Por exemplo, você pode adicionar tags que listam o ambiente e o projeto ao qual um recurso pertence. Ou, você pode adicionar tags que identificam um centro de custo ou a equipe proprietária de um recurso. Adicione todos os valores que façam sentido para a sua organização.

O valor da tag é exibido na página de visão geral do recurso do Azure e em relatórios de custo.

Como posso criar uma etiqueta de recurso do Azure?

Cada recurso tem um atributo tags:. Até agora, você tem usado o displayName padrão para a tag da sua conta de armazenamento:

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

Para tornar esse atributo mais útil, você pode definir um parâmetro que tenha mais informações e, em seguida, usar esse parâmetro no atributo tags:. Por exemplo, você pode criar um parâmetro para manter um objeto chamado resourceTags:

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

Aqui, você criou um objeto para armazenar valores para um nome de ambiente e um nome de projeto, mas pode definir o que quiser.

Em seguida, você pode usar esse parâmetro para qualquer recurso que seja para o ambiente de desenvolvimento e o projeto de inventário; por exemplo, a sua conta de armazenamento.

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

O que é um arquivo de parâmetro de modelo ARM?

Um arquivo de parâmetro de modelo ARM contém valores que são passados para o modelo ARM quando o modelo é executado. Usando um arquivo de parâmetros para cada ambiente no qual um modelo ARM é implantado, você garante que os parâmetros corretos sejam definidos para esse ambiente específico. Você também garante que pode acompanhar o histórico e a manutenção desses valores de parâmetro no controle do código-fonte.

Como faço para usar arquivos de parâmetro de modelo ARM?

Os arquivos de parâmetro de modelo ARM são arquivos JSON que contêm valores de parâmetro. Por exemplo, para os parâmetros usados no modelo ARM até agora, você pode criar um arquivo de parâmetro de modelo da seguinte maneira:

{
    "$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"
        }
      }
    }
  }

Em seguida, você pode criar um arquivo semelhante a esse arquivo para cada ambiente. Por exemplo, esses arquivos podem ser chamados de azuredeploy.parameters.dev.json e azuredeploy.parameters.prod.jsone manter valores diferentes para os parâmetros.

Para implantar um modelo ARM usando um arquivo de parâmetro, especifique o caminho para o arquivo de parâmetro no comando deployment. Na CLI do Azure, você usa --parameters {path to parameter file}. No PowerShell, você usa -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