SuperAPI AI 工具集

terraform-provider-upgrade

部署与运维

查看项目

更新于 10-16 07:29

技能介绍

用途

Terraform Provider Upgrade 技能提供了一套完整的工作流,用于安全地升级 Terraform Provider,涵盖自动资源迁移、破坏性变更检测和正确的状态管理。它主要面向需要升级 Provider 版本(尤其是主版本)、处理已移除或弃用资源、在资源类型之间迁移(例如 azurerm_sql_* 到 azurerm_mssql_*)、检测并解决破坏性变更、替换已弃用的 Provider 属性,以及在升级期间管理 Terraform 状态的场景。

主要能力

该技能能够区分破坏性与非破坏性变更。非破坏性变更通常包括次版本或补丁版本更新、没有移除资源、没有必需参数变更、向后兼容的弃用替换、新增可选参数或错误修复;破坏性变更则包括主版本更新、需要代码迁移的已移除资源、必需参数变更(重命名、类型变更)、影响行为的默认值变更、认证或 Provider 配置变更。

技能通过 MCP 工具识别破坏性变更,关键指标包括升级指南中标题为“Removed Resources”“Breaking Changes”“Behavior Changes”的章节,被列为“removed”或“superseded by”的资源,被标记为“renamed”“removed”或“type changed”的参数,以及影响现有行为的默认值变更。

核心工作流包括:清点当前状态(查找所有 Provider 引用并记录当前版本)、检查最新版本、研究破坏性变更、扫描代码库中已移除的资源、验证参数变更、应用代码迁移、记录变更。

使用方式

使用 MCP 工具获取当前和最新版本,例如 get_latest_provider_version(namespace="hashicorp", name="azurerm"),并解析升级指南以确认变更范围。通过 resolveProviderDocID 和 getProviderDocs 获取旧资源和新资源的文档,比较必需参数、重命名参数、类型变更、已移除参数和新增参数及其默认值。

应用代码迁移时,更新资源类型、添加 moved 块以实现状态迁移、更新参数变更(例如从基于名称改为基于 ID)、更新依赖资源、替换已弃用的 Provider 属性、更新版本约束。

对于破坏性变更,在仓库根目录创建 TERRAFORM_UPGRADE_BREAKING_CHANGES.md 文档,记录已执行的操作(而非待执行的操作),并附上详细的提交信息引用该文档。非破坏性变更则无需详细文档,只需更新版本约束并提交简要信息。

适用场景

适用于升级 Provider 版本(尤其是主版本)、处理已移除或弃用资源、在资源类型之间迁移、检测并解决破坏性变更、替换已弃用的 Provider 属性、在升级期间管理 Terraform 状态。

限制

资料中未提供关于该技能的具体收费、价格、平台支持范围或效果保证等信息。技能建议使用管道验证,让 CI/CD 处理 terraform 命令,而非直接建议用户运行 terraform 命令。文档中强调不要提供手动迁移步骤,代码应处理一切;不要假设参数保持不变,始终验证 schema;不要忘记依赖资源;不要遗漏属性变更;不要移除 Provider 块,只更新已弃用的参数。