Vagrant VirtualBox 名称固定为默认值

Vagrant VirtualBox name stuck to default

尽管阅读了这篇文章

How to change Vagrant 'default' machine name?

我的主机名固定为 default

这是我的 Vagrantfile:

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.hostname = "web"
  config.vm.network :private_network, ip: "10.0.0.10"
  config.vm.provider :virtualbox do |vb|
    vb.name = "vagrant-web"
  end
end

但是

$ vagrant status
Current machine states:

default                   running (virtualbox)

$ vagrant ssh web
The machine with the name 'web' was not found configured for
this Vagrant environment.

但是

$ vagrant ssh default

工作正常。

我完成了 vagrant haltvagrant up。还有其他建议吗?

如果你想更改 vagrant 名称(与 virtualbox 名称相比)你需要执行以下操作

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"

  config.vm.define "web" do |web|
    web.vm.hostname = "web"
    web.vm.network :private_network, ip: "10.0.0.10"
    web.vm.provider :virtualbox do |vb|
      vb.name = "vagrant-web"
    end
  end

end

这种表示法主要用于 multi VM 的情况,但如果您确实希望 vagrant 名称不同于默认值,也可以用于单个 VM 的情况。

当你启动虚拟机时,它会说

$ vagrant up
Bringing machine 'web' up with 'virtualbox' provider...

因此,如果您查看状态,您会看到

$ vagrant status
Current machine states:

web                       running (virtualbox)

要通过 ssh 进入机器,你可以 vagrant ssh 因为你只有一台机器,(当然 vagrant ssh web 也可以)

一个注意事项 作为一个新的 vagrant 机器,它实际上会创建一个新名称的新机器,你创建的默认机器仍然存在,所以如果你已经有了东西在那里,它不会自动复制到新机器中。如果你想保留现有的虚拟机,你可以将 .vagrant 文件夹中的 default 目录重命名为 web,理论上它可以工作,但我自己从未尝试过