【问题标题】:How do I make a vagrant plugin action occur before synced folder?如何在同步文件夹之前进行 vagrant 插件操作?
【发布时间】:2014-08-01 23:16:08
【问题描述】:

我试图修复 vagrant-rackspace plugin 中的一个问题,该问题需要在同步文件夹运行之前运行命令从 sudoers 文件中删除 requiretty 行,因为 rsync 命令将失败并显示 sudo: sorry, you must have a tty to run sudo

但是,无论 Vagrantfile 中的顺序如何,同步文件夹操作总是先执行。似乎在核心 Vagrant 中,已同步的文件夹具有最高优先级,并且将始终首先运行。我认为它会像供应商,which are run in order they're put in the Vagrantfile

【问题讨论】:

    标签: vagrant vagrantfile


    【解决方案1】:

    最后我想起了 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 上运行的脚本的路径配置中的节点,允许您在任何 Vagrant 实例中使用上述方法,而不仅仅是 vagrant-rackspace。

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2017-01-01
      • 2016-06-18
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多