azure-deployment-preflight 是做什么的?
对Azure Bicep部署执行全面的预检验证,包括模板语法验证、what-if分析和权限检查。在进行任何Azure部署前使用此技能,预览更改,识别潜在问题,确保部署成功。当用户提及部署到Azure、验证Bicep文件、检查部署权限、预览基础设施更改、运行what-if或准备azd provision时激活。
功能
- 语法验证:对Bicep文件运行
az bicep build,确保模板语法正确。 - What-If分析:使用
az deployment group what-if或az deployment sub what-if模拟部署,预览将对Azure资源产生的影响。 - 权限检查:验证用于部署的服务主体或用户账户是否具有所需的RBAC权限。
- 依赖检查:确保所有必需的资源(如资源组、网络、密钥保管库等)已存在且配置正确。
- 配置验证:检查
azuredeploy.parameters.json等参数文件是否正确。 - 成本估算:可选地提供部署的预估成本。
用法示例
# 语法验证
az bicep build --file main.bicep
# What-If分析(资源组范围)
az deployment group what-if \
--resource-group myResourceGroup \
--template-file main.bicep \
--parameters @azuredeploy.parameters.json
# What-If分析(订阅范围)
az deployment sub what-if \
--location eastus \
--template-file main.bicep \
--parameters @azuredeploy.parameters.json
# 权限检查(创建验证部署)
az deployment group validate \
--resource-group myResourceGroup \
--template-file main.bicep \
--parameters @azuredeploy.parameters.json
触发条件
当用户提出以下任何请求时,自动激活此技能:
- “帮我验证这个Bicep文件”
- “在对Azure部署之前,帮我预览一下有什么变化”
- “检查我的资源组权限是否正确”
- “运行一次what-if分析”
- “准备
azd provision,但先预检一下” - “我的Bicep模板有问题,帮我排查”
- “我需要确保这个部署能成功”
输出示例
语法验证通过
✅ Bicep语法验证通过
What-If输出(部分示例)
资源:Microsoft.Storage/storageAccounts (mystorageaccount)
- 将创建
- 属性更改:
- sku.name: "Standard_LRS" -> "Standard_GRS"
资源:Microsoft.Network/virtualNetworks (myvnet)
- 保持不变
资源:Microsoft.Compute/virtualMachines (myvm)
- 将创建
- 属性:...
权限检查结果
✅ 当前用户/服务主体具有对资源组 'myResourceGroup' 的 'Contributor' 权限。
或
❌ 缺少权限:需要 'Microsoft.Resources/deployments/write' 操作。
限制
- What-If分析不保证部署100%成功(例如,配额限制或延迟的RBAC传播)。
- 权限检查基于Azure RBAC,不涵盖Azure Policy或Azure Blueprints的限制。
- 建议在CI/CD管道中也包含此预检步骤。
版本历史
- v1.0: 初始版本,包含语法验证、What-If分析和权限检查。