2

Although I could ssh manually in VirtualBox, Packer does not know if ssh connection is established.
I've seen the same issues, but I could not find any solution for this.
My purpose of using packer is to convert my existing ovf file to Digital Ocean droplet, so that I could use it in my Digital Ocean server.

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"]
}

Running packer build without debug option

➜  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.

When I ran in debug mode

==> 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
seoyoochan
  • 784
  • 2
  • 10
  • 27

1 Answers1

2

The reason of this error was because eth0 device does not present, which is because new MAC addresses are not overwritten.

There are 2 solutions:
1) remove /etc/udev/rules.d/70-persistent-net.rules to get new MAC addresses or
2) change eth0 name to eth1 like eth1, eth2, eth3

After following either of the above methods, reboot the guest system by typing reboot.

check ifconfig -a
you will see eth0 or other ethernet name that you chose.

seoyoochan
  • 784
  • 2
  • 10
  • 27