Terraform v1.0.5执行init安装hashicorp/azurerm v2.73.0路径不存在问题咨询
报错根因
1. 核心原因:Windows系统默认路径长度限制
Windows默认启用MAX_PATH限制,单条路径最长仅支持260个字符。
你当前的场景下同时满足两个触发条件:
- 子模块引用使用了4层上级相对路径,说明项目整体的目录层级较深,根模块本身所在的路径已经较长
- Terraform下载azurerm provider时会在工作目录下生成固定的长嵌套缓存路径:
.terraform\providers\registry.terraform.io\hashicorp\azurerm\2.73.0\windows_amd64\terraform-provider-azurerm_v2.73.0_x5.exe
两者叠加后总路径长度超过260字符上限,系统无法访问对应路径,因此抛出「系统找不到指定路径」的错误。
2. 非直接触发但需要修正的配置问题
你在子模块内部定义了完整的provider "azurerm"块,不符合Terraform的使用规范:provider配置应该统一放在根模块中管理,子模块仅需要声明required_providers即可。子模块内置provider块会导致多套provider实例初始化,加剧缓存路径的复杂度,后续也会引发其他配置冲突问题。
修复方案
- 开启Windows长路径支持:打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将LongPathsEnabled的DWORD值修改为1,重启系统后生效 - 缩短项目总路径:将整个Terraform项目迁移到目录层级更浅的路径下(例如
C:\tf-project\),减少总路径长度 - 调整provider配置:将子模块中的
provider "azurerm"块迁移到根模块,子模块仅保留required_providers声明 - 优化子模块引用:调整项目目录结构,避免使用多层级的相对路径引用子模块,缩短模块源路径长度
内容的提问来源于stack exchange,提问作者CodeMed
相关产品推荐
相关产品推荐

