← 中文资源

简体中文版本

Terraform 报 provider 版本冲突或无法查询 provider

通过约束版本并刷新依赖锁文件,修复 provider 版本冲突。

阅读英文原文

症状

terraform init 以 provider 版本冲突失败,或报无法查询 provider 包。两个模块可能要求不兼容的范围,某固定版本可能已被移除,或锁文件相对配置已过期。由于 Terraform 每个 provider 只能选一个版本,任何相互矛盾的约束都会中断初始化。

诊断

读取 Terraform 打印的约束;对齐使存在共同版本;用 init -upgrade 解析并刷新锁文件。

terraform init 2>&1 | head -30

根因

没有任何单一 provider 版本同时满足合并后的约束或锁文件,Terraform 无法选择并安装 provider。

修复

放宽或对齐版本约束使存在共同版本;把锁文件升级到兼容版本;确保 registry 或镜像提供所需版本。

验证

再次运行 init 确认成功并安装 provider,再运行 validate 确认配置一致。init 成功且配置有效即证明版本已一致。

常见陷阱

用 ~> 与精确版本混用容易产生不可满足的约束;应在模块间统一版本策略。