Terraform 代理故障:下载、提供商与远程运行
当代理只对一次运行的某一部分生效时,区分 Terraform 注册表下载、Git 模块拉取、提供商 API 调用与远程执行。
提供商下载成功,并不能说明之后的云端 API 调用也会成功。先找到第一个失败的主机名和操作,再确定它属于哪一方:
| 操作 | 沿这条路径排查 |
|---|---|
| 注册表查询或安装下载 | Terraform 进程、安装来源与代理环境 |
| 基于 Git 的模块拉取 | 源 URL 与 Git 传输方式;SSH 与 HTTPS 使用不同设置 |
| 云端 API 调用 | 提供商插件及其 SDK 的路由与信任配置 |
| 远程执行 | 运行器的环境与网络,而不是笔记本的 |
对于支持 CONNECT 的 HTTP 代理,这个环境变量值可以正确地为 HTTPS 目的地选中它:
HTTPS_PROXY=http://proxy.example:3128变量指定的是目的地的协议,值指定的是代理的传输方式。只有当监听端提供 TLS 且发起请求的客户端支持时,才使用 https://。提供商是独立的插件,可能使用 SDK 特定的设置,因此这个值并不代表每一个提供商。
在已确定的归属方那里,改配置之前先区分错误层次:代理连接被拒绝、代理 407、CONNECT 被拒、证书错误和云端 API 403,各自把下一步排查引向不同方向。把阶段、目的地、执行环境和第一个错误放在一起。
把受支持的设置应用到该组件上。在笔记本上 export 并不会配置远程运行器,代理凭据也不能用于向注册表或云端 API 认证。