如何在synced文件夹之前进行vagrant插件操作?

时间:2014-08-01 23:16:09

标签: vagrant vagrantfile

我正在尝试修复vagrant-rackspace plugin中的问题,该问题需要在同步文件夹运行之前运行命令从sudoers文件中删除requiretty行,因为rsync命令将失败which are run in order they're put in the Vagrantfile 1}}。

但是,无论Vagrantfile中的顺序如何,同步文件夹操作总是先行。似乎在核心Vagrant中,同步文件夹具有最高优先级,并且将始终首先运行。我认为这就像供应商{{3}}。

1 个答案:

答案 0 :(得分:0)

最后,我想起了plugin I'd worked on recently:

中类似的代码行
 action_hook(:install_chef, Plugin::ALL_ACTIONS) do |hook|
    require_relative 'action/install_chef'
    hook.after(Vagrant::Action::Builtin::Provision, Action::InstallChef)

    if defined? VagrantPlugins::AWS::Action::TimedProvision
      hook.after(VagrantPlugins::AWS::Action::TimedProvision,
                 Action::InstallChef)
    end
  end

所以,我只是改变了这一点,以确保我想要的任务总是在同步文件夹任务之前运行:

  action_hook(:tty_workaround, Plugin::ALL_ACTIONS) do |hook|
     require_relative 'action/tty_workaround'
     hook.after(Vagrant::Action::Builtin::SyncedFolders, Action::TTYWorkaround)
  end

像魅力一样工作!

我仍在试图弄清楚是否有一种方法可以在Vagrant核心中执行此操作,但是现在我正计划制作一个流浪插件,您可以在其中提供您想要在流浪者上运行的脚本的路径配置中的节点,允许您在任何Vagrant实例中使​​用上述方法,而不仅仅是vagrant-rackspace。