在大厅中运行VirtualBox任务

在大厅中运行VirtualBox任务,virtualbox,concourse,Virtualbox,Concourse,我想用concourse建造流浪者的箱子。我正在使用concourse/buildbox ci图像,该图像在concourse自己的构建管道中用于构建concourse-lite-vagrant-box 在运行packer之前,我将创建virtualbox设备,以便它们与主机设备匹配。然而,封隔器构建失败: ==> virtualbox-iso: Error starting VM: VBoxManage error: VBoxManage: error: The virtual mach

我想用concourse建造流浪者的箱子。我正在使用
concourse/buildbox ci
图像,该图像在concourse自己的构建管道中用于构建concourse-lite-vagrant-box

在运行packer之前,我将创建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
vagrant/ci/scripts/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}
vagrant/ci/tasks/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

不幸的是,Hetzner worker配置基本上只是我们定期升级VirtualBox,并在崩溃时进行修复。(编辑:我们还确保在主机和容器中使用相同的OS发行版——在我们的例子中是Arch Linux)

确保您的VirtualBox版本与容器中的版本相匹配—一直到修补程序版本

设备ID(10,53和10,52以及10,51)也必须与主机上的ID相匹配-这些ID因VirtualBox的版本而异

我们还确保使用一个不执行任何网络名称空间的特殊后端,如果您正在旋转需要仅主机网络的虚拟机,这一点很重要


这整件事很棘手/

目前我在主机和容器中运行Ubuntu 16.04,但这也不起作用。如果我有时间的话,我会在arch上重新设置。在那之前,我将使用ssh/scp对文件进行修补。谢谢您的回复,也谢谢您的支持。爱死它了!