2017-03-01 59 views
2

我正在嘗試搭建中央廣場。我使用的是concourse/buildbox-ci圖片,在大堂自己的構建管道中使用該圖片來構建中央廣場的流浪盒。在Concourse任務中運行VirtualBox

運行打包機之前使它們匹配的主機設備我創建VirtualBox虛擬設備。儘管如此,封隔器編譯失敗:

==> virtualbox-iso: Error starting VM: VBoxManage error: VBoxManage: error: The virtual machine 'packer-virtualbox-iso-1488205144' has terminated unexpectedly during startup with exit code 1 (0x1) 
==> virtualbox-iso: VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine 
  • 已經有人得到這個工作?
  • 是任何地方匯合hetzner工人配置訪問?

額外的配置信息:

在大廳工作容器

# ls -al /dev/vboxdrv /dev/vboxdrvu /dev/vboxnetctl 
crw------- 1 root root 10, 53 Feb 27 14:19 /dev/vboxdrv 
crw------- 1 root root 10, 52 Feb 27 14:19 /dev/vboxdrvu 
crw------- 1 root root 10, 51 Feb 27 14:19 /dev/vboxnetctl 

工人主機上:

# ls -al /dev/vbox* 
crw------- 1 root root 10, 53 Feb 24 09:40 /dev/vboxdrv 
crw------- 1 root root 10, 52 Feb 24 09:40 /dev/vboxdrvu 
crw------- 1 root root 10, 51 Feb 24 09:40 /dev/vboxnetctl 

廣場的工作:

jobs: 
    - name: mpf 
    serial_groups: [build] 
    plan: 
     - get: vagrant 
     trigger: true 
     - get: version 
     resource: version-mpf 
     - task: build 
     privileged: true 
     file: vagrant/ci/tasks/build.yml 
     tags: [vm-builder] 
     params: 
      TEMPLATE_FILE: virtualbox-mpf.json 

流浪漢/ CI /腳本/ build.sh:

#!/bin/bash -ex 

mknod -m 0600 /dev/vboxdrv c 10 53 
mknod -m 0600 /dev/vboxdrvu c 10 52 
mknod -m 0600 /dev/vboxnetctl c 10 51 

for name in $(VBoxManage list hostonlyifs | grep '^Name:' | awk '{print $NF}'); do 
    VBoxManage hostonlyif remove $name 
done 

VERSION=$(cat version/version) 

packer build -var 'version=${VERSION}' vagrant/packer/${TEMPLATE_FILE} 

流浪漢/ CI /任務/ build.yml:

--- 
platform: linux 

image_resource: 
    type: docker-image 
    source: {repository: concourse/buildbox-ci} 

inputs: 
    - name: vagrant 
    - name: version 

outputs: 
    - name: build 

run: 
    path: vagrant/ci/scripts/build.sh 

回答

2

不幸的是,HETZNER工人的配置基本上是我們定期升級VirtualBox和當事情摔倒時修理東西。 (編輯:我們也確保在主機和容器中使用相同的OS發行版 - 在我們的例子中,Arch Linux)。

確保您的VirtualBox的版本在容器中的版本匹配 - 下到補丁版本。

的設備ID(10,53和10,52和10,51)也必須與在主機上 - 這些從版本不同而不同的VirtualBox版本。

我們也請務必使用不執行任何網絡命名空間,如果你旋轉起來的虛擬機需要一個host-only網絡是重要的一個特殊的後端。

這整個事情的棘手。 :/

+0

目前,我在主機上,並在容器中運行的Ubuntu 16.04,但這也不管用。如果我找到時間,我會嘗試在拱門上重新設置它。在此之前,我會用ssh/scp'ing文件修飾一些東西。感謝您的回覆,並感謝您的彙集。愛它! –