启动流浪机器时如何检查先决条件?

How to check for a precondition when starting a vagrant machine?

我有一个多机Vagrantfile,想在用户运行s vagrant up machineB时做一个快速检查,如果失败则报错退出。

我想到的具体测试是 curl 一些 URL 并验证 200 响应,但我认为细节不重要。

这个想法是为了节省用户启动机器、同步一些文件夹和运行配置脚本所花费的时间,只是为了发现所需的资源不可用。

到目前为止,我最好的想法是将此检查放在供应脚本的开头,但我想早点做。

我知道我可以只在 Vagrantfile 的开头检查,有点像它是如何完成的 here,但是随后检查将 运行 在每个流浪命令上,我会仅在尝试启动 machineB 时特别喜欢 运行。

  1. 您可以 运行 您的机器 B 的特定块中的条件,因此只有当您调用机器 B 的命令时它才会 运行

  2. 您可以从命令行检查 ARGV[0] 参数以确保它是 up

这看起来会有些东西

Vagrant.configure("2") do |config|

  config.vm.box = xxx
  config.ssh.username = xxx

  config.vm.define "machineA" do |db|
    db.vm.hostname = xxx
    p system ("curl http://www.google.fr")
    and your condition here
  end

  config.vm.define "machineB", primary: true do |app|
    app.vm.hostname = xxx

    if "up".eql? ARGV[0]
      p system ("curl http://www.google.fr")
      and your condition here
    end
  end

不确定你想要用 curl 结束什么,但你可以只使用 net/http lib