Vagrant全局状态:所有名为"default"的虚拟机

4
当我运行vagrant global-status命令时,会返回我正在运行的所有Vagrant管理的虚拟机列表,但其中有些输出内容让我感到意外。尽管我在初始化期间为每台虚拟机都指定了一个明确的name,但global-status输出中每台机器的name值总是default,这让我很困惑。
为什么vagrant statusvagrant global-status没有列出实际的虚拟机名称?有时,当我销毁一个虚拟机时,它竟然会销毁多个虚拟机。
id       name    provider   state    directory                           
-------------------------------------------------------------------------
e44520d  default virtualbox poweroff /Users/name/code/foo        
1310726  default virtualbox poweroff /Users/name/code/bar    
430fd52  default virtualbox poweroff /Users/name/code/baz 

机器的名称是foobarbaz... 为什么它们显示为default
1个回答

2
如果您使用默认的Vagrantfile配置,那么您的虚拟机将被命名为"default",因此类似于:
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu-12.04"
  config.vm.hostname = "foo"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  . . . 

现在,如果您有一个多机器配置,您的Vagrantfile将会像这样(简化):
Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu-12.04"

  config.vm.define "db" do |db|
    db.vm.hostname = db.test

    db.vm.provider "vmware_fusion" do |vm|
      vm.vmx["memsize"] = "2048"
    end

    db.vm.provision "shell", path: "bootstrap-dev.sh"
  end

  config.vm.define "app", primary: true do |app|
    app.vm.hostname = app.test
    app.vm.network "private_network", "192.168.50.11"
    app.vm.synced_folder "project/site", "/var/www"
  end
end

在这种情况下,您定义了2台机器dbappvagrant global-status将提示。
id       name    provider      state       directory
-----------------------------------------------------------------------------------------------------------
de264ac  db      vmware_fusion not running /Volumes/Transcend/Project1
bdd4385  app     vmware_fusion not running /Volumes/Transcend/Project1

我明白了...现在我明白为什么如果你只有单个VM Vagrant文件,它们都会被称为“default”。谢谢。 - Brian Vanderbusch
如果您更改了该名称,那么在使用 vagrant ssh 时是否需要像使用多主机 Vagrantfile 一样指定它? - Wildcard
1
如果您只有1个VM,@Wildcard将不会直接登录VM,也无法使用ssh。 - Frederic Henri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接