Windows 10下Packer构建VM出现机器未找到错误的解决咨询
解决Packer构建VirtualBox虚拟机时的"找不到注册机器名"错误
我之前也碰到过一模一样的问题,这个错误的根源在于你在vboxmanage配置里提前修改了虚拟机的名称,干扰了Packer的默认构建流程。
Packer在构建VirtualBox虚拟机的初期,会自动生成一个临时名称(格式类似packer-virtualbox-iso-xxxxxx),然后基于这个临时名称执行后续的vboxmanage命令。但你在vboxmanage列表里加了--name参数,把虚拟机名称改成了{{ user alias }}指定的值,这就导致Packer后续再去找原来的临时名称时,机器已经被改名,自然找不到了。
下面是具体的解决步骤:
移除
vboxmanage中的--name配置项
删掉这一行修改名称的配置,它是问题的核心:[ "modifyvm", "{{.Name}}", "--name", "{{ user `alias` }}" ]在builder中直接添加
vm_name参数
直接在virtualbox-iso的builder配置里加入这个参数,让Packer一开始就用你指定的名称创建虚拟机,不用后期修改:"vm_name": "{{ user `alias` }}"验证修改后的完整配置
修改后的关键部分配置如下(其他原有配置保持不变):{ "builders": [ { "type": "virtualbox-iso", "vm_name": "{{ user `alias` }}", // 新增的vm_name参数 "vboxmanage": [ [ "modifyvm", "{{.Name}}", "--cpus", "1" ], [ "modifyvm", "{{.Name}}", "--clipboard", "bidirectional" ], [ "modifyvm", "{{.Name}}", "--memory", "2048" ], [ "modifyvm", "{{.Name}}", "--draganddrop", "bidirectional" ], [ "modifyvm", "{{.Name}}", "--boot3", "disk" ], [ "modifyvm", "{{.Name}}", "--audio", "none" ], [ "modifyvm", "{{.Name}}", "--nic1", "intnet" ], [ "modifyvm", "{{.Name}}", "--nic2", "null" ] ], "guest_os_type": "Ubuntu_64", "iso_url": "{{ user `iso_url` }}", "iso_checksum": "{{ user `iso_checksum` }}", "iso_checksum_type": "md5", "disk_size": "{{ user `disk_size` }}", "ssh_username": "packer", "ssh_password": "packer", "guest_additions_mode": "attach", "headless": "{{ user `headless` }}", "shutdown_command": "echo 'packer' | sudo -S shutdown -P now" } ], "variables": { "headless": "false", "iso_checksum": "{checksum number variable}", "iso_url": "file:///C:/{path to iso file}", "disk_size": "256000", "alias": "packervm" } }额外清理(可选)
如果之前构建失败留下了残留的虚拟机,可以打开VirtualBox管理器,手动删除所有名称包含packer-的临时机器,避免干扰新的构建。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

