当我运行 vagrant global-status
时,我得到了我正在运行的所有 vagrant 托管虚拟机的列表,但我没有预料到的是输出了机器详细信息。尽管我在初始化期间为每台计算机指定了显式的 name
,但每台计算机的 global-status
输出中的 name
值始终为 默认
。
为什么vagrant status
或vagrant 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
这些机器名为 foo
、bar
、baz
...为什么它们显示为默认
?
最佳答案
如果你有默认的 Vagrantfile 作为配置,你的机器虚拟机将被命名为默认,所以类似于
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 台机器 db
和 app
,vagrant 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
关于Vagrant 全局状态所有虚拟机的命名默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059685/