虽然我可以在VirtualBox中手动ssh,但Packer不知道是否建立了ssh连接 我已经看到了同样的问题,但我找不到任何解决办法 我使用打包器的目的是将我现有的ovf文件转换为Digital Ocean droplet,以便我可以在我的Digital Ocean服务器中使用它。
template.json
{
"builders": [
{
"type": "virtualbox-ovf",
"source_path": "/Users/seoyoochan/Desktop/work/G4M_3.1.2_OVF_demo/G4M_centos6_demo.ovf",
"ssh_username": "root",
"ssh_password": "g4mg4m$$",
"boot_command":[
"root<return>",
"g4mg4m$$<return>"
],
"headless": true,
"boot_wait": "30s",
"ssh_wait_timeout": "10000s",
"shutdown_command": "echo 'packer' | sudo -S shutdown -P now"
}
],
"post-processors": ["vagrant"]
}
在没有调试选项的情况下运行打包程序
➜ G4M_3.1.2_OVF_demo packer build template.json
virtualbox-ovf output will be in this color.
==> virtualbox-ovf: Downloading or copying Guest additions
virtualbox-ovf: Downloading or copying: file:///Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso
==> virtualbox-ovf: Importing VM: /Users/seoyoochan/Desktop/work/G4M_3.1.2_OVF_demo/G4M_centos6_demo.ovf
==> virtualbox-ovf: Creating forwarded port mapping for SSH (host port 3249)
==> virtualbox-ovf: Starting the virtual machine...
==> virtualbox-ovf: Waiting 10s for boot...
==> virtualbox-ovf: Typing the boot command...
==> virtualbox-ovf: Waiting for SSH to become available...
==> virtualbox-ovf: Timeout waiting for SSH.
==> virtualbox-ovf: Unregistering and deleting imported VM...
==> virtualbox-ovf: Error deleting VM: VBoxManage error: VBoxManage: error: Cannot unregister the machine 'packer-virtualbox-ovf-1451547904' while it is locked
==> virtualbox-ovf: VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
==> virtualbox-ovf: VBoxManage: error: Context: "Unregister(CleanupMode_DetachAllReturnHardDisksOnly, ComSafeArrayAsOutParam(aMedia))" at line 155 of file VBoxManageMisc.cpp
==> virtualbox-ovf: Deleting output directory...
Build 'virtualbox-ovf' errored: Timeout waiting for SSH.
==> Some builds didn't complete successfully and had errors:
--> virtualbox-ovf: Timeout waiting for SSH.
==> Builds finished but no artifacts were created.
我在调试模式下运行
==> virtualbox-ovf: Waiting for SSH to become available...
2015/12/31 17:43:48 packer-builder-virtualbox-ovf: 2015/12/31 17:43:48 [DEBUG] TCP connection to SSH ip/port failed: dial tcp 127.0.0.1:3581: getsockopt: connection refused
2015/12/31 17:43:53 packer-builder-virtualbox-ovf: 2015/12/31 17:43:53 [DEBUG] TCP connection to SSH ip/port failed: dial tcp 127.0.0.1:3581: getsockopt: connection refused
2015/12/31 17:43:58 packer-builder-virtualbox-ovf: 2015/12/31 17:43:58 [DEBUG] TCP connection to SSH ip/port failed: dial tcp 127.0.0.1:3581: getsockopt: connection refused
答案 0 :(得分:1)
此错误的原因是因为不存在eth0设备,这是因为不会覆盖新的MAC地址。
有两种解决方案:
1)删除private void writeToFile(String data, String fileName) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.openFileOutput(fileName, Context.MODE_APPEND));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
以获取新的MAC地址
或
2)将/etc/udev/rules.d/70-persistent-net.rules
名称更改为eth0
,例如eth1
,eth1
,eth2
按照上述任一方法后,键入eth3
重新启动来宾系统。
检查reboot
您将看到ifconfig -a
或您选择的其他以太网名称。