是否可以将本地zip文件作为Terraform模块的source参数取值?
Terraform 本地ZIP包作为模块源问题解答
Terraform 原生不支持直接引用本地 ZIP 压缩包作为模块源,你给出的source = "./network.zip"配置方式无法正常运行。
相关说明
- 目前 Terraform 仅支持本地解压后的目录作为本地模块源,相对路径、绝对路径均可,只要路径指向包含模块配置文件的目录即可正常识别。
- 你提到的 ZIP 包作为模块源的使用场景仅适用于远程源:包括 S3 等对象存储地址、HTTP/HTTPS 直链、Git 仓库关联的压缩包地址等,Terraform 拉取这类远程源时会自动完成 ZIP 包的解压操作,无需额外处理。
可行的替代方案
- 提前手动将本地的
network.zip解压到任意目录,修改模块 source 指向解压后的目录路径即可,示例:
module "network" { source = "./network" # 对应解压后的network目录 }
- 如果需要简化模块分发,可将 ZIP 包上传至内部可用的对象存储、静态文件服务,使用对应的远程地址作为模块 source 即可复用远程ZIP源的自动解压能力。
- 特殊场景下需要强制使用本地 ZIP 包的话,可以自行编写前置执行脚本,在运行
terraform init前自动将指定本地 ZIP 包解压到临时工作目录,再将模块 source 指向对应临时目录即可,该方案属于自定义适配逻辑,非 Terraform 原生功能。
内容的提问来源于stack exchange,提问作者gdix0n
相关产品推荐
相关产品推荐

