在流浪汉停止/暂停之前是否可以添加动作钩子

时间:2016-03-10 09:44:08

标签: vagrant

我希望在暂停或暂停操作生效之前触发我的VM 上的操作。

我看到我可以使用的动作钩子但是完成动作https://www.vagrantup.com/docs/plugins/action-hooks.html之后它们都是。 有线索吗?

3 个答案:

答案 0 :(得分:4)

我相信大多数钩子都是用于插件开发的 - 你所看到的是vagrant trigger plugin所以如果你想在挂起或停止之前完成操作:

Vagrant.configure("2") do |config|
  # Your existing Vagrant configuration
  ...

  # run some script before the guest is halted
  config.trigger.before :halt do
    info "Dumping the database before destroying the VM..."
    run_remote  "bash /vagrant/cleanup.sh"
  end

  # run some script before the guest is suspended
  config.trigger.before :suspend do
    info "Dumping the database before destroying the VM..."
    run_remote  "bash /vagrant/cleanup.sh"
  end

  # clean up files on the host after the guest is destroyed
  config.trigger.after :destroy do
    run "rm -Rf tmp/*"
  end

  # start apache on the guest after the guest starts
  config.trigger.after :up do
    run_remote "service apache2 start"
  end

end

答案 1 :(得分:0)

我认为您也可以尝试在来宾计算机上使用udev事件。 当vagrant up第一次完成(或稍后使用vagrant provision时,可以通过配置完成此操作。 例如,我在nfs使用代码挂载目录后重新启动php5-fpm。

我认为您也可以在来宾操作系统上使用systemd(如果您正在使用具有systemd的操作系统)。

答案 2 :(得分:0)

您可以查看:

https://github.com/lqbweb/vagrant_hook

这是一个基本而简单的流浪插件,证明了如何依附于某种流浪链动作。