2

我有一个Vagrantfile克隆所需的食谱存储库vagrant up。问题是,它也在vagrant destroy. 有没有办法定义“预构造”和“预销毁”命令,或者无论参数如何,每次调用 vagrant 时,Vagrantfile 是否都会全部运行?

4

2 回答 2

4

我不知道销毁挂钩,但是您可以通过检查机器 ID 的存在来检测 Vagrantfile 中的第一次和销毁后的操作:

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
于 2013-12-31T16:13:50.270 回答
1

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

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

于 2013-09-21T11:34:03.683 回答