运行时依赖
版本
显示已销毁的资源
安装命令
点击复制技能文档
Terraform 计划分析器和风险评估器
分析 Terraform 计划输出并生成每个基础设施更改的 AI 驱动风险评估 —— 在您应用更改之前。
此技能严格为只读。它运行 terraform plan 和 terraform validate 来分析更改,但永远不会运行 terraform apply、terraform destroy、terraform import、terraform taint 或任何修改基础设施或状态的命令。
激活 此技能在用户提及以下内容时激活: "terraform plan"、"tf plan"、"review plan"、"plan review"、"is this plan safe"、"safe to apply"、"risk assessment"、"what will be destroyed"、"what changes"、"terraform changes"、"terraform state"、"state drift"、"drift detection"、"terraform validate"、"validate config"、"tf validate"、"IAM changes"、"security group changes"、"infrastructure changes"、"blast radius"、"cascade effects"、"dependencies"、"tofu plan"、"opentofu"(相同的工作流程,不同的二进制文件)
示例提示 "审查此 Terraform 计划,然后我将应用它" "此计划中将删除什么?" "此计划是否安全应用?" "显示状态漂移" "此计划中有哪些 IAM 更改?" "验证我的 Terraform 配置在 ~/infra/prod" "在 /deployments/staging 中运行 Terraform 计划的风险评估" "如果我应用此计划,影响范围是什么?"
权限 permissions: exec:true # 需要运行 terraform/tofu CLI read:true # 读取 .tf 文件和计划输出 write:false # 永远不会写入 —— 严格只读分析 network:true # terraform plan 需要提供程序 API 访问
Terraform 更改类型 —— 代理必须知道的内容 了解 Terraform 更改类型对于准确的风险评估至关重要: 操作类型(来自计划 JSON) 操作 含义 风险-profile create 新资源被添加 一般安全(除非 IAM/安全) update 现有资源在原地修改 中等(取决于正在更改的内容) delete 资源被永久删除 危险 —— 数据丢失风险 replace(删除 + 创建) 资源必须被销毁并重新创建 危险 —— 中断 + 数据丢失 read 数据源被刷新 安全(只读) no-op 没有更改 安全
什么使得更改危险 关键( CRITICAL): 任何销毁/替换的:IAM 角色/策略、安全组、KMS 密钥、秘密、数据库(RDS、DynamoDB、Cloud SQL、Azure SQL)、S3 存储桶、DNS 记录、WAF 规则、CloudTrail 任何更新的 IAM 策略、安全组规则、加密设置 这些更改可能导致数据丢失、安全漏洞或服务中断 危险( DANGEROUS): 销毁/替换的:EC2 实例、负载均衡器、ECS/EKS 集群、VPC、子网、NAT 网关、Lambda 函数、API 网关 这些更改会导致中断,可能需要手动干预来恢复 中等( MODERATE): 更新的:自动缩放策略、监控/警报规则、启动模板 创建的:安全敏感资源(新 IAM 角色、新安全组) 影响容量或可观察性但不影响数据完整性的更改 安全( SAFE): 仅标签更新 创建新的非敏感资源 无操作/只读操作
替换尤其危险 当 Terraform 说它必须“替换”一个资源时,这意味着: 删除现有的资源(不可逆转) 创建一个具有新配置的新资源 这是在不可变属性更改时触发的(例如,更改 RDS 引擎版本、EC2 ami、更改子网的 AZ)。 代理应该始终突出地标记替换,因为: 旧资源(及其数据)被销毁 将在销毁和创建之间存在间隙(中断) 依赖资源可能在转换期间中断
代理工作流程 按照用户意图严格遵循此序列: 对于计划分析(“审查此计划”、“是否安全”、“什么更改”) 步骤 1:运行计划分析 bash /scripts/tf-plan-review.sh plan 如果没有指定目录,则使用当前工作目录。 脚本输出: stdout:结构化 JSON,包含所有资源更改、风险分类和摘要 stderr:漂亮的 Markdown 风险报告 步骤 2:解析 JSON 解析 JSON 输出。 关键字段: { "overall_risk": " CRITICAL | HIGH | MODERATE | LOW", "summary":{ "create":5, "update":3, "destroy":1, "replace":0 }, "risk_breakdown":{ "critical":1, "dangerous":0, "moderate":2, "safe":5 }, "resources":[ { "address": "aws_iam_role.admin", "action": "delete", "risk": " CRITICAL" } ] } 步骤 3:呈现风险评估 显示 stderr 中的 Markdown 报告。 然后添加您自己的 AI 分析: 首先显示总体风险级别 —— 使其变得生动 首先突出显示销毁和关键更改 —— 这些是杀死生产的内容 以简单的英语解释为什么每个关键更改是危险的 评估影响范围 —— 哪些其他资源依赖于被销毁的资源? 呈现预应用清单 —— 人类应该验证什么? 给出明确的建议: “安全应用” / “不安全应用”