使用 Azure 资源管理器模板标记和参数文件维护多个 Azure 部署

已完成

部署到多个 Azure 环境时,需要使用的 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