使用 Azure 资源管理器模板标记和参数文件维护多个 Azure 部署
部署到多个 Azure 环境时,需要使用 Azure 资源管理器 (ARM) 模板的两个功能。 这两个功能分别是资源标记和 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