离线部署Terraform VCD provider 3.2.0执行plan时崩溃如何解决
修复步骤
1. 关闭VCD provider版本检查
VCD Provider 3.2.0默认启用版本检测逻辑,会主动连接GitHub查询最新版本,离线环境下网络不通会触发空指针异常导致插件崩溃,你需要在provider配置块中新增关闭版本检查的参数:
provider "vcd" { user = "test" password = "test" url = "https://test/api" auth_type = "integrated" vdc = "Org1VDC" org = "System" max_retry_timeout = "60" allow_unverified_ssl = "true" # 关闭公网版本检测,离线环境必填 enable_version_check = false }
2. 修复插件锁文件缺失问题
报错中提到的lock.json不存在是因为离线安装时Terraform没有从本地镜像源正确生成依赖锁,按以下操作修正:
- 清理当前项目的旧缓存:
rm -rf .terraform .terraform.lock.hcl - 在操作系统当前用户根目录创建
.terraformrc配置文件,指定provider使用本地镜像源,禁止公网下载:provider_installation { filesystem_mirror { # 替换为你本地存放VCD provider二进制的根目录 path = "/root/.terraform.d/plugins" include = ["registry.terraform.io/vmware/*"] } # 排除vmware相关provider的公网下载逻辑 direct { exclude = ["registry.terraform.io/vmware/*"] } } - 确认本地provider的目录结构符合Terraform规范,示例路径:
/root/.terraform.d/plugins/registry.terraform.io/vmware/vcd/3.2.0/linux_amd64/terraform-provider-vcd_v3.2.0 - 重新执行初始化命令:
terraform init
初始化完成后会自动生成正确的依赖锁文件,再次执行terraform plan即可正常运行。
内容的提问来源于stack exchange,提问作者Mextos
相关产品推荐
相关产品推荐

