使用Terraform的shekeriev/virtualbox Provider创建虚拟机失败求助
问题描述
环境信息
terraform -v Terraform v1.3.6 on windows_amd64 + provider registry.terraform.io/shekeriev/virtualbox v0.0.4
配置文件(main.tf)
terraform { required_providers { virtualbox = { source = "shekeriev/virtualbox" version = "0.0.4" } } } provider "virtualbox" { # Configuration options } resource "virtualbox_vm" "node" { count = 1 name = format("node-%02d", count.index + 1) image = "https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/20190507.0.0/providers/virtualbox.box" cpus = 1 memory = "512 mib" network_adapter { type = "hostonly" device = "IntelPro1000MTDesktop" host_interface = "VirtualBox Host-Only Ethernet Adapter" } }
执行步骤
terraform init terraform plan terraform apply yes
错误日志
Error: failed to unpack image https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/20190507.0.0/providers/virtualbox.box: error unpacking gold image virtualbox.box: exit status 2 │ │ with virtualbox_vm.node[0], │ on main.tf line 18, in resource "virtualbox_vm" "node": │ 18: resource "virtualbox_vm" "node" {
已尝试更换不同镜像及其他VirtualBox Terraform Provider(如terra-farm),均触发相同解压错误,需解决该问题。
解决方案
1. 验证解压工具可用性
错误核心是镜像解压失败(exit status 2),Windows环境下Terraform VirtualBox Provider依赖7z或unzip工具:
- 确认已安装7-Zip或unzip工具
- 将工具安装路径添加至系统
PATH环境变量 - 重启命令行窗口,执行
7z --version或unzip -v验证工具可正常调用
2. 手动处理镜像文件
- 手动下载目标VirtualBox镜像到本地
- 使用7-Zip解压box文件,提取内部的虚拟机磁盘文件(如
.vmdk) - 修改
main.tf中image字段为本地磁盘文件的绝对路径,替代远程URL
3. 检查权限与路径配置
- 以管理员权限运行命令行窗口,避免解压或写入VirtualBox存储目录时的权限限制
- 确认VirtualBox默认存储路径存在且具备读写权限
- 确保Terraform工作目录、VirtualBox存储目录无中文或特殊字符
4. 调整组件版本
- 升级VirtualBox至最新稳定版,修复旧版本的镜像兼容性问题
- 尝试切换Terraform版本(如1.5.x系列),规避版本不匹配引发的解压逻辑异常
内容的提问来源于stack exchange,提问作者Taras Paslavskyi
相关产品推荐
相关产品推荐

