在Vagrantfile中获取vagrant提供程序版本并将其传递给配置程序

时间:2016-06-16 12:56:54

标签: shell virtualbox vagrantfile vagrant-provision

我试图在Ubuntu trusty64主机上的CentOS / 7 guest虚拟机上自动配置VBoxGuestAdditions,我发现的最好方法是直接从virtualbox.org下载.iso,安装它和安装附加功能。

一切正常,但有一个我无法弄清楚的问题 - 我无法从访客的shell配置程序中访问虚拟机的确切版本,以下载匹配版本的VBoxGuestAdditions.iso文件。

所以,我在做什么:

在Vagrantfile中:

...
config.vm.provision "shell", path: "provision.sh"
...

在shell配置器中:

...
wget -c http://download.virtualbox.org/virtualbox/4.3.36/VBoxGuestAdditions_4.3.36.iso -O /opt/VBoxGuestAdditions.iso
mount /opt/VBoxGuestAdditions.iso -o loop /mnt
sh /opt/VBoxLinuxAdditions.run --nox11
rm /opt/*.iso
chkconfig --add vboxadd
chkconfig vboxadd on
...

问题出在VBoxGuestAdditions_4.3.36.iso下载路径中的4.3.36

我可以通过

将参数传递给shell provisioner
config.vm.provision "shell", path: "provision.sh", :args => <args>
在Vagrantfile中的

,但是我无法看到如何从主机中获取实际版本字符串,以便将其传递给guest虚拟机上的配置器。

这样的东西
config.vm.provision "shell", path: "provision.sh", :args => "--provider-version="+config.vm.provider.version

会很理想,但那并不适用。

1 个答案:

答案 0 :(得分:0)

我发现我问的是错误的问题。真正的答案是vagrant-vbguest插件。它透明地处理VBoxGuestAdditions安装,并使我们免于在配置中处理它。