2017-03-01 32 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文件修饰一些东西。感谢您的回复,并感谢您的汇集。爱它! –