SuperAPI AI 工具集

terraform-troubleshooting

部署与运维

查看项目

更新于 10-15 20:34

技能介绍

用途:该技能用于系统化调试 Terraform 错误,通过分类诊断、详细日志分析和常见问题的成熟解决方案,快速定位并修复故障。

适用场景:apply 或 plan 失败、状态锁超时或并发修改、Provider 错误(如 GCP API 报错、认证失败)、HCL 语法与类型不匹配、基础设施意外变更(状态漂移)、Provider 或 Terraform 版本不兼容、GCP IAM 或服务账号权限不足。错误分为四类:语言错误、状态错误、核心错误、Provider 错误。

主要能力与用法:先启用调试日志,再按流程排查。 启用日志:export TF_LOG=DEBUG 与 export TF_LOG_PATH=/tmp/terraform.log,级别可选 TRACE、DEBUG、INFO、WARN、ERROR,完成后用 unset TF_LOG 与 unset TF_LOG_PATH 关闭。 排查顺序:terraform validate 检查语法与必填参数;terraform fmt -check -recursive 检查格式;terraform refresh 同步状态;terraform init -upgrade 更新 Provider;terraform plan -out=tfplan 查看变更;用 grep -i error /tmp/terraform.log 过滤日志。 状态锁:可用 terraform apply -lock-timeout=10m 等待,或 terraform force-unlock LOCK_ID 强制解锁,必要时删除后端锁文件(如 gsutil rm gs://bucket/prefix/default.tflock)。 循环依赖:通过显式字符串或 depends_on 打破循环。 版本冲突:在 required_providers 中锁定版本(如 version = "~> 5.26.0"),再 terraform init -upgrade,并提交 .terraform.lock.hcl。 GCP 权限:用 gcloud auth list、gcloud config get-value project 检查身份,用 gcloud projects get-iam-policy 查看绑定,用 gcloud projects add-iam-policy-binding 授予角色(如 roles/pubsub.editor)。 状态漂移:terraform refresh 同步,或用 terraform import 导入、terraform state rm 移除。

限制:需 Terraform 1.x+、已配置 GCP 凭据、可写日志路径及 gcloud、gsutil 工具。force-unlock 与删除锁文件有风险,应谨慎使用;validate 不校验云端实际状态,refresh 只读不改。资料未提供收费、价格与平台支持信息。