Azure订阅级What-If操作异常及部署后资源识别方法咨询
订阅级Bicep部署的What-If优化与资源识别方案
一、让资源组内资源在What-If中显示NoChange的方法
订阅级What-If仅默认跟踪订阅级资源(如资源组、策略定义、角色分配等),资源组内的资源属于资源组级部署的管辖范围,因此会被标记为Ignored。要让这些资源显示NoChange,需针对每个资源组单独执行资源组级What-If命令:
az deployment group what-if --resource-group <目标资源组名称> --result-format FullResourcePayloads -f deploy.main.bicep --parameters @deploy.main.parameters.stg.json
如果Bicep中创建了多个资源组,需要逐个对每个资源组执行上述命令,就能看到组内资源的状态为NoChange。
二、部署后识别该订阅级部署包含的所有资源名称的方法
1. 用Azure CLI查询部署关联资源
首先通过以下命令找到目标订阅级部署的名称:
az deployment sub list --location westeurope -o table
然后用部署名称查询所有关联资源的名称:
az deployment sub show --name <部署名称> --query properties.outputResources[].name -o tsv
如果需要查看资源ID或其他属性,可调整query字段,比如properties.outputResources[].id。
2. 在Bicep中定义输出变量显式导出资源名称
在deploy.main.bicep中添加输出块,主动列出所有创建的资源名称:
// 示例:根据你实际创建的资源调整 output deployedResourceNames array = [ resourceGroup('rg-stg').name virtualMachine('vm-stg').name storageAccount('sa-stg').name ]
部署完成后,通过以下命令获取输出的资源名称列表:
az deployment sub show --name <部署名称> --query properties.outputs.deployedResourceNames.value -o tsv
这种方式最精准,完全由你控制输出内容,避免遗漏。
3. 通过Azure门户查看
- 登录Azure门户,搜索并进入「部署」页面
- 切换到「订阅部署」标签,找到目标部署记录
- 进入部署详情页,查看「关联的资源」标签,即可看到该部署创建的所有资源列表
补充说明
订阅级部署确实不支持Complete模式,因此无法通过该模式自动清理未包含的资源,上述方法可满足你追踪部署资源的需求。
内容的提问来源于stack exchange,提问作者Sotiris Sotiriou
相关产品推荐
相关产品推荐

