Как определить порядок выполнения брандмауэрных плагинов промежуточного программного обеспечения?

Я создаю виртуальную машину Red Hat Enterprise Linux 7 в VirtualBox с бродягой. Если у меня есть базовый ящик, в котором у обоих нет добавок для гостевых приложений VirtualBox, и он не зарегистрирован, тогда мне нужно будет сделать следующее:

  • Зарегистрируйте поле с подписчиком-менеджером
  • Установить гостевые дополнения

Причина, по которой мне нужно будет сначала выполнить регистрацию, заключается в том, что для установки гостевых дополнений мне нужно будет установить дополнительные пакеты.

Теперь для обеих этих задач есть сторонние бранные плагины: vagrant-registration и vagrant-vbguest.

Проблема, с которой я столкнулась, заключается в том, что плагин vagrant-vbguest всегда будет запускаться первым и не сможет загрузить нужные ему пакеты, поскольку плагин vagrant-registration еще не успел зарегистрироваться системы.

Есть ли способ заставить одного из них запускаться перед другим? Или любое другое альтернативное решение, о котором я еще не думал (я не бродячий волшебник (или это просто называется бродягой?))?

Ответ 1

в духе моих комментариев, но это должно быть более автоматическим способом

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 будет запущен, поэтому vbguest не сможет установить необходимые библиотеки.

Другая возможность, которую я вижу, - использовать блуждающий триггерный плагин (https://github.com/emyl/vagrant-triggers), вы можете определить для запуска определенного script после была выполнена специальная команда

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

vbguest корректно запускается после загрузки машины (так что я предполагаю, что после того, как брандмауэр сделал свой собственный материал)

вывод (интересная часть) запуска 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.

установка гостевых дополнений продолжается и перезагрузка компьютера ok