1

我试着用谷歌搜索这个,但在使用 vagrant 和 virtualbox 的人身上得到了 5000 次点击。

由于我的 virtualbox 有需要 USB 支持的机器,我需要安装扩展包。

我需要让 puppet 安装我的扩展包文件。

我目前有这个用于 VirtualBox:

class virtualbox(
  $ubuntu_release
) {
  apt::source { virtualbox:
    location    => 'http://download.virtualbox.org/virtualbox/debian',
    release     => $ubuntu_release,
    repos       => 'contrib',
    key         => '98AB5139',
    key_source  => "http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc",
    include_src => false,
  }
  package { virtualbox:
    name => 'virtualbox-4.2',
    ensure => present,
    require => Apt::Source['virtualbox']
  }
}

有人有办法安装扩展包吗?恐怕如果我执行 exec,我将无法检查我是否实际安装了该包或它所在的版本,所以它只会继续重新安装。而且由于每次有新的 VirtualBox 版本时扩展包都会更新,所以我也需要能够更新它..

这是安装包的当前命令。

wget -nv http://download.virtualbox.org/virtualbox/4.2.10/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack -P /tmp && VBoxManage extpack install /tmp/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack --replace

我尝试做一些事情,比如在文件中包含一个扩展包版本:

class vbox_extension {
    $packagever = "4210"
    $packagefile = "/var/log/puppet/vbox_extension.ver"
    exec { "vboxinst":
    command => "wget -nv http://download.virtualbox.org/virtualbox/4.2.10/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack -P /tmp \
                && VBoxManage extpack install /tmp/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack --replace \
                && echo \"$packagever\" > \"$packagefile\"",",
    unless  => "test \"`cat $packagefile 2>/dev/null`\" = \"$packagever\"",
    require => virtualbox
    }
}

但这真的是最干净的方法吗?

4

1 回答 1

2

我决定创建一个 debian 包,因为无论如何我们都在运行我们自己的 repo。

在 12.04 系统的 Ubuntu 12.10 上运行它。

以下是步骤:

成为根..

sudo su

你需要FPM,FPM需要安装rubygems。

apt-get install rubygems
gem install fpm

运行这个:

mkdir -p /opt/vbext
cd /opt/vbext
wget -nv http://download.virtualbox.org/virtualbox/4.2.10/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack
cat <<EOF> /opt/vbext/installpack
#/bin/bash
VBoxManage extpack install /opt/vbext/Oracle_VM_VirtualBox_Extension_Pack-4.2.10-84104.vbox-extpack --replace
EOF
cat <<EOF> /opt/vbext/removepack
#/bin/bash
vboxmanage extpack uninstall "Oracle VM VirtualBox Extension Pack"
EOF
chmod +x installpack removepack
fpm -t deb -n extpack -v 4.2.10-84104 -d virtualbox-4.2 --after-install installpack --after-remove removepack -s dir /opt/vbext/

您现在将拥有一个打包整齐的 debian 软件包。

ls /opt/vbext/*.deb
extpack_4.2.10-84104_amd64.deb

FPM 支持模板化脚本,但我现在懒得把它放进去..

于 2013-03-19T12:18:14.410 回答