从命令行指定无头或GUI

Dan*_*ter 12 vagrant

根据文档,在GUI模式下运行Vagrant VM很容易:

config.vm.provider "virtualbox" do |v|
  v.gui = true
end
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法从命令行执行此操作,例如在运行时vagrant up?例如,

vagrant up --gui
vagrant up --headless
Run Code Online (Sandbox Code Playgroud)

不同的用户可能更喜欢启动UI; 它似乎不应该在每个人都会使用的Vagrantfile中指定!

tma*_*lai 21

GUI选项是特定于提供者的(并且只有极少数提供者支持它),因此顶级vagrant命令为其添加开关感觉不对.

根据我的经验,GUI最常见的用例是:

  • 运行桌面型机器,在这种情况下,设置在Vagrantfile中是有意义的
  • 调试启动等问题,当你只想暂时启用它时

如果您无论如何都要设置打开和关闭GUI的常规设置,您可以使用环境变量.例如,在Vagrantfile中这样的东西:

# Returns true if `GUI` environment variable is set to a non-empty value.
# Defaults to false
def gui_enabled?
  !ENV.fetch('GUI', '').empty?
end

Vagrant.configure('2') do |config|
  config.vm.provider 'virtualbox' do |v|
    v.gui = gui_enabled?
  end
end
Run Code Online (Sandbox Code Playgroud)

然后在*nix系统的命令行上:

GUI=1 vagrant up
Run Code Online (Sandbox Code Playgroud)

在Windows上:

set GUI=1
vagrant up
Run Code Online (Sandbox Code Playgroud)