You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform初始化报错:Failed to query available provider packages

Terraform init报错:无法连接registry.terraform.io(DNS超时)

问题本质

你的WSL环境无法通过DNS解析registry.terraform.io域名,导致Terraform无法获取local provider的包列表,触发了I/O超时错误。

入门级解决步骤

  • 第一步:测试网络状态
    在WSL终端执行以下命令排查问题:

    # 测试能否解析目标域名
    ping registry.terraform.io
    # 测试基础网络连通性
    ping 8.8.8.8
    

    如果ping registry.terraform.io超时,但ping 8.8.8.8能通,确定是DNS配置问题;如果两个都超时,先检查WSL的网络连接是否正常(比如宿主机网络是否可用)。

  • 第二步:修复WSL的DNS配置

    1. 临时修改DNS(重启WSL后可能失效):

      vi /etc/resolv.conf
      

      将文件内的nameserver行替换为公共DNS,比如:

      nameserver 8.8.8.8
      

      保存退出后,再次执行ping registry.terraform.io验证是否能解析。

    2. 永久固定DNS(防止WSL自动重置):
      创建/etc/wsl.conf文件:

      vi /etc/wsl.conf
      

      写入以下内容:

      [network]
      generateResolvConf = false
      

      保存退出后,关闭WSL终端,在Windows命令行执行wsl --shutdown重启WSL,再手动修改/etc/resolv.conf设置公共DNS即可。

  • 第三步:重新初始化Terraform
    回到你的terraform-local-file目录,执行:

    terraform init
    

    此时应该能正常连接registry并下载local provider。

  • 备选方案:手动离线安装provider
    如果网络问题无法解决,可手动下载provider包:

    1. 根据你的系统架构(比如Linux amd64),找到hashicorp/local 2.3.0版本的对应安装包;
    2. 创建本地provider目录:
      mkdir -p ~/.terraform.d/plugins/registry.terraform.io/hashicorp/local/2.3.0/linux_amd64
      
      (注意把linux_amd64换成你的系统架构,比如linux_arm64)
    3. 将下载的包解压到上述目录;
    4. 再次执行terraform init,Terraform会直接使用本地的provider文件。

内容的提问来源于stack exchange,提问作者Cloudlord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:00:59