如何定义 vagrant 中间件插件的 运行 顺序?

How can I define the run order of vagrant middleware plugins?

我正在使用 vagrant 在 VirtualBox 中创建一个 Red Hat Enterprise Linux 7 虚拟机。如果我有一个基础盒子,既没有 VirtualBox 来宾添加,也没有注册,那么我需要手动执行以下操作:

我需要先执行注册的原因是,要安装来宾添加,我需要安装一些额外的包。

现在,这两个任务都有第 3 方 vagrant 插件:vagrant-registration and vagrant-vbguest

我遇到的问题是 vagrant-vbguest 插件总是会首先尝试 运行,并且无法下载它需要的包,因为 vagrant-registration插件还没来得及注册系统

有没有办法强制其中一个 运行 在另一个之前?或者我还没有想到的任何其他替代解决方案(我不是流浪巫师(或者只是所谓的流浪者?))?

本着我评论的精神,但应该以更自动的方式

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vbguest.auto_update = false

  if Vagrant.has_plugin?("vagrant-registration")
    system "vagrant vbguest --auto-reboot --no-provision" if ARGV[0] == 'up'
  end

不确定它会 运行 以正确的顺序(我自己没有尝试)

编辑 这段代码的问题在于它会在命令启动时尝试 运行 vbguest,因此在 vm 之前 运行 ning 所以 vbguest 无法安装必要的库。

我看到的另一种可能性是使用 vagrant trigger 插件(https://github.com/emyl/vagrant-triggers),你可以在特定命令 运行[=15= 之后定义到 运行 特定脚本]

config.vbguest.auto_update = false
config.trigger.after :up do
  run "vagrant vbguest --auto-reboot --no-provision"
end

机器启动后 vbguest 是正确的 运行(所以我假设在 vagrant-registration 做了它自己的事情之后)

运行ning vagrant up 的输出(有趣的部分):

==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => /Users/fhenri/project/examples/vagrant/precise
==> default: Running triggers after up...
==> default: Executing command "vagrant vbguest --auto-reboot --no-provision"...
==> default: GuestAdditions versions on your host (4.3.16) and guest (4.2.0) do not match.

来宾添加的安装继续进行,机器重新启动正常

这似乎是 vagrant-registration 插件的问题。参见 https://github.com/projectatomic/adb-vagrant-registration/issues/69

问题已修复,修复版本现已发布,即https://rubygems.org/gems/vagrant-registration/versions/1.2.2