2016-01-01 146 views
1

雖然我可以在VirtualBox中手動ssh,但Packer不知道是否建立了ssh連接。
我見過相同的問題,但我找不到任何解決方案。
我使用打包器的目的是將我現有的ovf文件轉換爲數字海洋液滴,以便我可以在我的數字海洋服務器中使用它。Packer超時等待VirtualBox的SSH錯誤

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

你如何在調試模式下運行?像這樣:'packer build -debug config.json' – activedecay

回答

1

該錯誤的原因是因爲eth0設備不存在,這是因爲新的MAC地址未被覆蓋。

有2級的解決方案:
1)除去/etc/udev/rules.d/70-persistent-net.rules以獲得新的MAC地址 或
2)變化eth0名稱eth1eth1eth2eth3

後下列任一上述方法中,重新啓動客人系統通過輸入reboot

檢查ifconfig -a
您將看到eth0或您選擇的其他以太網名稱。