概览
什么是 azure-validate?
azure-validate 是一个部署验证技能,用于在实际部署前,对你的 Azure 应用和基础设施执行深入的预检(preflight checks)。它会读取由 azure-prepare 生成并通过审核的部署计划,然后验证配置、基础设施即代码(Bicep 或 Terraform)、Azure Developer CLI(azd)工作流、Azure CLI(azcli)脚本、策略、区域以及所需权限。
这个技能位于工作流的部署阶段,但行为更像是一套自动化测试,为你的 Azure 环境做体检。它帮助你确认部署计划是安全可执行的,并确保你的应用确实已准备好上线部署。
什么时候应该使用这个技能?
在以下场景下使用 azure-validate:
- 检查你的应用和基础设施是否已经可以部署
- 在运行
azd provision或azd deploy之前验证azure.yaml或 Bicep 模板 - 为 Terraform 或原生 Azure CLI 脚本执行预部署检查
- 校验 Azure 订阅、区域和配额选择是否合理
- 验证计划资源是否符合 Azure Policy 要求
- 提前捕获常见 Azure CLI 和 IaC 验证错误
- 排查在 CI/CD 流水线中反复失败的部署
最推荐的使用顺序是:
azure-prepare → azure-validate → azure-deploy
azure-validate 适合谁?
azure-validate 主要面向:
- 在 Azure 上构建应用的后端开发者和云开发者
- 负责稳定可靠部署的 DevOps 和平台工程师
- 在基础设施层面标准化使用 Bicep、Terraform、azd 或 azcli 的团队
- 需要统一、自动化预部署检查的 CI/CD 负责人
如果你经常管理多环境部署(dev / test / prod),或需要遵守全组织范围的策略和区域规则,这个技能可以为你提供一层可重复的验证防线。
它解决哪些问题?
azure-validate 通过提前捕获以下问题,帮助减少部署失败或部分部署的情况:
azure.yaml或 IaC 文件中的缺失或无效配置- 某些服务使用了配置错误或不受支持的 Azure 区域
- 会阻止部署的 Azure Policy 违规
- 身份验证和权限问题(例如缺少角色)
- Bicep 和模板相关的常见 Azure CLI 验证错误
- azd、azcli、Bicep 与 Terraform 之间基础设施定义不一致
你不必等到生产环境或流水线后期才发现这些问题,而是在验证环节就能看到清晰的问题指引和修复方案。
在哪些情况下不适合使用 azure-validate?
这个技能不适用于:
- 非 Azure 部署(其他云或仅本地环境)
- 部署后的监控、健康检查或可观测性
- 应用层测试套件(单元测试、集成测试或 UI 测试)
- 未通过
azure-prepare生成部署计划的一次性手工部署
如果你没有使用基础设施即代码,也没有使用结构化计划文件(例如由 azure-prepare 生成的 .azure/plan.md),你将无法充分发挥 azure-validate 的价值。
使用方法
1. 安装与基础设置
将 azure-validate 添加到你的技能列表
从 microsoft/azure-skills 仓库安装该技能:
npx skills add https://github.com/microsoft/azure-skills --skill azure-validate
这会让你的 agent 或工具环境中可以使用 azure-validate 的工作流。
必须遵循的工作流顺序
在运行 azure-validate 之前,你必须已经:
- 成功调用过
azure-prepare,并且 - 存在一个状态为
Approved或更高阶段的.azure/plan.md文件
支持的工作流顺序严格为:
azure-prepare → azure-validate → azure-deploy
如果缺少 .azure/plan.md 文件,或该文件尚未通过审核,请先停止操作并运行 azure-prepare。
2. 理解核心触发场景与规则
关键触发场景
在以下情况下使用 azure-validate:
- 需要确认某个应用是否准备好部署
- 需要验证
azure.yaml或 Bicep 模板 - 在资源预配前需要执行预检(preflight checks)
- 排查来自 IaC 或 CLI 步骤的 Azure 部署错误
必须遵循的核心规则
根据技能说明和共享的 global-rules 参考:
- 仅在
azure-prepare之后、任何真实部署之前运行 azure-validate。 - 将验证失败视为阻断性错误。在问题解决前不要继续执行
azure-deploy。 - 对任何破坏性或高影响操作(删除、覆盖、大额成本或安全变更),必须按照
references/global-rules.md中的说明,通过ask_user显式征求用户确认。 - 不要擅自假定 Azure 订阅或区域;在相关场景下必须向用户确认。
3. 按基础设施类型使用对应验证 recipe
该技能在 references/recipes/ 下提供了针对不同基础设施方式的验证 recipe。
面向 Azure Developer CLI (azd) 项目
- 从
references/recipes/azd/README.md开始。 - 使用
references/recipes/azd/environment.md校验环境配置。 - 使用
references/recipes/azd/errors.md解读并修复常见azd验证与部署问题。 - 对于基于 .NET Aspire 的项目,查看
references/recipes/azd/aspire.md获取额外检查项。
这些指南帮助你在使用 azd 预配之前,确认 azure.yaml、应用连接关系和环境设置都有效。
面向 Azure CLI (azcli) + Bicep 工作流
- 从
references/recipes/azcli/README.md入手,获取完整的 AZCLI 验证清单,包括:- 校验 Azure CLI 是否安装(
az version) - 登录并设置订阅
- 编译 Bicep(
az bicep build) - 执行模板验证和 what-if 预览
- 校验 Azure CLI 是否安装(
- 使用
references/recipes/azcli/errors.md快速定位和修复常见az错误信息(如 token 问题、多因素认证、授权失败、模板校验失败等)。
这一组合能为你提供一个清晰、按步骤执行的方式,用 Azure CLI 验证基于 Bicep 的部署。
面向 Bicep 为主的基础设施
- 查看
references/recipes/bicep/README.md获取 Bicep 专用验证工作流。 - 使用
references/recipes/bicep/errors.md了解典型 Bicep 验证问题及对应解决方案。
你可以将这些检查整合进本地开发流程或 CI 流水线,在正式部署前确保模板和参数都有效。
面向 Terraform 部署
- 使用
references/recipes/terraform/README.md将 azure-validate 与 Terraform 的 plan 和 apply 步骤对齐。 - 参考
references/recipes/terraform/errors.md了解常见 Terraform 验证错误和 Azure 授权错误及其解决方式。
这些 recipe 可以帮助你在任何环境运行 terraform apply 之前,先验证 Terraform 基础设施定义和 Azure 账户配置。
4. 验证策略、区域与配额是否准备就绪
Azure Policy 验证
使用 references/policy-validation.md 作为指南,确保计划中的部署符合订阅上的 Azure Policy 分配。
典型流程:
-
获取当前订阅 ID:
az account show --query id -o tsv -
按照文档示例,使用 Azure policy MCP 集成列出并审查该订阅的策略。
-
在继续之前,解决策略违规问题(例如不允许的 SKU、缺失标签、受限资源类型、被限制的区域、网络安全规则等)。
只有在确认策略合规后,才应继续进行部署。
区域可用性和配额检查
使用 references/region-availability.md 交叉核对架构中所有服务在指定区域的支持情况以及配额是否充足。
这一点对区域受限的服务尤为关键,例如:
- Azure Static Web Apps
- Azure OpenAI(不同模型在区域上的差异)
按照该参考文档以及列出的 MCP 工具(用于配额和区域可用性检查)进行操作,可以避免因区域不支持或容量不足导致的部署失败。
5. 应用和函数验证示例
Aspire + Azure Functions 机密存储
如果你使用 .NET Aspire 搭配 Azure Functions,请参考 references/aspire-functions-secrets.md:
- 检查应用宿主是否包含使用基于身份的存储的
AddAzureFunctionsProject配置。 - 确保
AzureWebJobsSecretStorageType已正确配置。 - 按建议修复(包括在需要时添加
.WithEnvironment("AzureWebJobsSecretStorageType", "Files")),然后再进行预配。
在 azd provision 之前执行这一步验证,可以避免常见的 Functions 机密存储问题,防止无服务器部署被阻塞。
6. 在 CI/CD 流水线中使用 azure-validate
虽然 azure-validate 本身是作为 agent skill 编写的,但其步骤和参考文档非常适合自动化流水线:
- 将各类 recipe 对应到流水线阶段(例如在部署任务前先运行 Bicep 验证和 what-if)。
- 对 recipe 或策略检查中暴露的任何验证错误直接让流水线失败。
- 在流水线日志中输出
references/*文件中的链接或片段,引导开发者快速修复问题。
这样可以将 azure-validate 打造成所有环境的统一预部署闸门。
7. 需要重点阅读的文件(用于深度定制)
如需将 azure-validate 更好地融入你的工作流,请在仓库中查看这些关键文件:
SKILL.md– 技能的权威说明,包括指令、触发条件、规则和步骤顺序。references/global-rules.md– 关于破坏性操作、订阅与区域处理的全局强制规则。references/policy-validation.md– 详细的策略验证使用说明。references/region-availability.md– 针对受限服务的区域和配额指导。references/aspire-functions-secrets.md– 针对 Aspire + Azure Functions 机密存储的验证说明。references/recipes/README.md– azd、azcli、Bicep 和 Terraform 验证 recipe 的索引。
建议把这些文档当作搭建工作流的积木,而不是一股脑照搬整套流程。
常见问题(FAQ)
azure-validate 是强制的吗?我可以不运行直接部署吗?
该技能设计上应运行在 azure-prepare 和 azure-deploy 之间。技术上你可以不运行 azure-validate 直接部署,但官方推荐将它视为必经闸门。跳过它会增加部署失败、策略阻断或区域 / 权限问题的风险。
我必须先运行 azure-prepare 吗?
是的。azure-validate 假定已经调用过 azure-prepare,并且存在状态为 Approved 或更高阶段的 .azure/plan.md 文件。如果该文件缺失或尚未通过审核,应先停止并运行 azure-prepare,然后再使用 azure-validate。
azure-validate 支持哪些基础设施工具?
azure-validate 提供了针对以下工具的 recipe 和指导:
- Azure Developer CLI (azd)
- 搭配 Bicep 模板的 Azure CLI (azcli)
- 基于 Bicep 的基础设施
- Terraform
你可以在 references/recipes/ 下选择与自己技术栈相匹配的 recipe。
可以在 CI/CD 流水线中使用 azure-validate 吗?
可以。虽然它以 agent skill 的形式编写,但其中的验证步骤、错误指南以及策略 / 区域检查都非常适合 CI/CD。你可以在流水线(如 GitHub Actions、Azure DevOps)中复现这些 recipe 和检查逻辑,让部署仅在验证通过时才继续进行。
azure-validate 会直接修改我的 Azure 资源吗?
azure-validate 专注于验证和预检。相关说明强调,对于任何破坏性或高影响操作,必须通过 ask_user 以及 global-rules 文件中定义的流程向用户明确确认。在典型使用场景下,你使用该技能来检查、验证和规划,而不是执行不可逆的更改。
azure-validate 如何帮助处理 Azure Policy 和治理?
该技能包含 references/policy-validation.md 文件,说明如何在部署前检查订阅上的策略并审查策略合规性。通过遵循这些指导,你可以提前发现不被允许的资源类型、SKU、标签或区域,并让部署与组织的治理规则保持一致。
它如何处理 Azure Static Web Apps、Azure OpenAI 等区域特定服务?
references/region-availability.md 列出了区域支持有限的服务,并指向官方 Azure 文档和相关 MCP 工具,用于检查配额和可用性。azure-validate 期望你参照该文档,只提供或使用所有必需服务都受支持的区域。
azure-validate 适用于本地开发环境吗?
适用,只要你计划部署到 Azure,并使用 azure-prepare 生成部署计划,就可以对开发和测试环境运行 azure-validate。这样可以在提升到预生产或生产环境前,尽早发现问题。
初次安装 azure-validate 时应该从哪里开始?
在添加技能之后,先阅读 SKILL.md 了解整体规则和执行顺序,然后查看 references/recipes/README.md,选择与你使用的基础设施工具(azd、azcli、Bicep、Terraform)对应的 recipe。接下来结合相应的 recipe,以及策略和区域相关文档,将 azure-validate 接入你的工作流。
