是否可以定义在流浪者破坏之前发生的事情?

时间:2013-09-20 19:46:28

标签: chef vagrant

我有Vagrantfile克隆了vagrant up上所需的食谱回购。问题是,它也在vagrant destroy上执行此操作。有没有办法定义'pre-construction'和'pre-destruction'命令,或者每次调用vagrant时Vagrantfile是否都可以运行,无论参数如何?

2 个答案:

答案 0 :(得分:4)

我不知道一个destroy钩子,但你可以通过检查机器ID是否存在来检测Vagrantfile中的第一次和post-destoy动作:

File.exists?(".vagrant/machines/default/virtualbox/id")

我使用它来放入机器的公钥,这允许我自动设置安全的SSH密钥:

if ! File.exists?(".vagrant/machines/default/virtualbox/id")
    # Then this machine is brannd new.
    system "cp #{KEYS_DIR}/workstation.pub #{OUR_DIR}"
end

答案 1 :(得分:1)

我强烈建议您使用Berkshelflibrarian,而不是编写自己的食谱依赖管理器。两者都有Vagrant的插件,它已经具有您正在寻找的功能。

我开始使用图书管理员(更简单,专注于做好一件事),但已切换到Berkshelf(这就像为我的刀命令添加额外的刀片)。