在某些情况下,排查模板问题的最佳方法是隔离和测试模板的特定部分。 可以创建一个故障排除模板,该模板侧重于你认为导致错误的资源。
例如,部署模板引用现有资源时发生错误。 而不是评估整个部署模板,而是创建一个故障排除模板,用于返回有关资源的数据。 输出可帮助你查找是否传入正确的参数、正确使用模板函数以及获取所需的资源。
部署故障排除模板
以下 ARM 模板和 Bicep 文件从现有存储帐户获取信息。 使用 Azure PowerShell New-AzResourceGroupDeployment 或 Azure CLI az deployment group create 运行部署。 指定存储帐户的名称和资源组。 输出是一个对象,其中包含存储帐户的属性名称和值。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string"
},
"storageResourceGroup": {
"type": "string"
}
},
"variables": {},
"resources": [],
"outputs": {
"exampleOutput": {
"value": "[reference(resourceId(parameters('storageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageName')), '2022-05-01')]",
"type": "object"
}
}
}
在 Bicep 中,使用 existing
关键字,并从存储帐户所在的资源组运行部署。 用于 scope
访问其他资源组中的资源。 有关详细信息,请参阅 现有资源。
param storageName string
resource stg 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
name: storageName
}
output exampleOutput object = stg.properties
备用故障排除方法
如果认为部署错误是由不正确的依赖项引起的,可以通过将模板分解为简化的模板来运行测试。 首先,创建仅部署单个资源的模板(例如 SQL Server)。 确定资源部署正确时,请添加依赖于它的资源(例如 SQL 数据库)。 正确定义这两个资源时,添加其他依赖资源(如审核策略)。 在每个测试部署之间,删除资源组以确保充分测试依赖项。