M

azure-validate

作者 microsoft

azure-validate 是一个用于 Azure 的预部署验证技能。它会在真实部署前检查你的配置、基础设施即代码(Bicep 或 Terraform)、Azure Developer CLI(azd)项目、权限、区域以及策略,提前发现潜在问题。

Stars0
收藏0
评论0
分类部署
安装命令
npx skills add https://github.com/microsoft/azure-skills --skill azure-validate
概览

概览

什么是 azure-validate?

azure-validate 是一个部署验证技能,用于在实际部署前,对你的 Azure 应用和基础设施执行深入的预检(preflight checks)。它会读取由 azure-prepare 生成并通过审核的部署计划,然后验证配置、基础设施即代码(Bicep 或 Terraform)、Azure Developer CLI(azd)工作流、Azure CLI(azcli)脚本、策略、区域以及所需权限。

这个技能位于工作流的部署阶段,但行为更像是一套自动化测试,为你的 Azure 环境做体检。它帮助你确认部署计划是安全可执行的,并确保你的应用确实已准备好上线部署。

什么时候应该使用这个技能?

在以下场景下使用 azure-validate:

  • 检查你的应用和基础设施是否已经可以部署
  • 在运行 azd provisionazd deploy 之前验证 azure.yaml 或 Bicep 模板
  • 为 Terraform 或原生 Azure CLI 脚本执行预部署检查
  • 校验 Azure 订阅、区域和配额选择是否合理
  • 验证计划资源是否符合 Azure Policy 要求
  • 提前捕获常见 Azure CLI 和 IaC 验证错误
  • 排查在 CI/CD 流水线中反复失败的部署

最推荐的使用顺序是:

azure-prepareazure-validateazure-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-prepareazure-validateazure-deploy

如果缺少 .azure/plan.md 文件,或该文件尚未通过审核,请先停止操作并运行 azure-prepare

2. 理解核心触发场景与规则

关键触发场景

在以下情况下使用 azure-validate:

  • 需要确认某个应用是否准备好部署
  • 需要验证 azure.yaml 或 Bicep 模板
  • 在资源预配前需要执行预检(preflight checks)
  • 排查来自 IaC 或 CLI 步骤的 Azure 部署错误

必须遵循的核心规则

根据技能说明和共享的 global-rules 参考:

  1. 仅在 azure-prepare 之后、任何真实部署之前运行 azure-validate。
  2. 将验证失败视为阻断性错误。在问题解决前不要继续执行 azure-deploy
  3. 对任何破坏性或高影响操作(删除、覆盖、大额成本或安全变更),必须按照 references/global-rules.md 中的说明,通过 ask_user 显式征求用户确认。
  4. 不要擅自假定 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 预览
  • 使用 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 分配。

典型流程:

  1. 获取当前订阅 ID:

    az account show --query id -o tsv
    
  2. 按照文档示例,使用 Azure policy MCP 集成列出并审查该订阅的策略。

  3. 在继续之前,解决策略违规问题(例如不允许的 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-prepareazure-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 接入你的工作流。

评分与评论

暂无评分
分享你的评价
登录后即可为这个技能评分并发表评论。
G
0/10000
最新评论
保存中...