我有以下配置只对vagrant up命令有意义:
config.vm.provider :virtualbox do |vb|
vb.gui = false
if ENV["VB_GUI"] == "true" then vb.gui = true
else
puts("[info] VB_GUI environment variable not set so running headless")
end
end
是否可以挂钩vagrant API来检索当前正在执行的命令? E.g。
config.vm.provider :virtualbox do |vb|
vb.gui = false
if VAGRANT_API.command == "up" # how can I do this?
if ENV["VB_GUI"] == "true" then vb.gui = true
else
puts("[info] VB_GUI environment variable not set so running headless")
end
end
end
答案 0 :(得分:22)
Vagrantfile
只是ruby代码,因此您可以使用ARGV
数组轻松获取命令行参数。
以下面的vagrant命令为例:
vagrant up webserver
这将启动在Vagrantfile
中定义为网络服务器的Vagrant框。然后,您可以像这样访问参数:
ARGV[0] = up
ARGV[1] = webserver
因此,使用您的示例,您需要执行以下操作:
config.vm.provider :virtualbox do |vb|
vb.gui = false
if ARGV[0] == "up"
if ENV["VB_GUI"] == "true" then vb.gui = true
else
puts("[info] VB_GUI environment variable not set so running headless")
end
end
end