我试着用谷歌搜索这个,但在使用 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
}
}
但这真的是最干净的方法吗?