启动流浪机器时如何检查先决条件?
How to check for a precondition when starting a vagrant machine?
我有一个多机Vagrantfile,想在用户运行s vagrant up machineB
时做一个快速检查,如果失败则报错退出。
我想到的具体测试是 curl
一些 URL 并验证 200 响应,但我认为细节不重要。
这个想法是为了节省用户启动机器、同步一些文件夹和运行配置脚本所花费的时间,只是为了发现所需的资源不可用。
到目前为止,我最好的想法是将此检查放在供应脚本的开头,但我想早点做。
我知道我可以只在 Vagrantfile 的开头检查,有点像它是如何完成的 here,但是随后检查将 运行 在每个流浪命令上,我会仅在尝试启动 machineB
时特别喜欢 运行。
您可以 运行 您的机器 B 的特定块中的条件,因此只有当您调用机器 B 的命令时它才会 运行
您可以从命令行检查 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
我有一个多机Vagrantfile,想在用户运行s vagrant up machineB
时做一个快速检查,如果失败则报错退出。
我想到的具体测试是 curl
一些 URL 并验证 200 响应,但我认为细节不重要。
这个想法是为了节省用户启动机器、同步一些文件夹和运行配置脚本所花费的时间,只是为了发现所需的资源不可用。
到目前为止,我最好的想法是将此检查放在供应脚本的开头,但我想早点做。
我知道我可以只在 Vagrantfile 的开头检查,有点像它是如何完成的 here,但是随后检查将 运行 在每个流浪命令上,我会仅在尝试启动 machineB
时特别喜欢 运行。
您可以 运行 您的机器 B 的特定块中的条件,因此只有当您调用机器 B 的命令时它才会 运行
您可以从命令行检查
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