之前每次使用 Vagrant 都是直接 vagrant init
初始化一个 Vagrant VM。
比如:vagrant init ubuntu/trusty64
创建出来的 Vagrantfile 都是这样的:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
end
然后开机之后就会到某些站点下载 box,完成之后就自动跑起来了。
这个时候,你有没有发现跑起来的虚拟机名称有什么特点?
比如:calamari_default_1448264988063_65272
,前面的是文件夹的名称,后面的数字可以理解成唯一标识,中间的 default 是什么意思。
应该就是起来的这个虚拟机的名称,当前文件夹下的 .vagrant/machines
目录下,不是也创建了一个 default
目录么。
还有,vagrant help up
中怎么说的来着:“Usage: vagrant up [options] [name]”。
这个 name 是怎么回事?
所以完全有理由怀疑一个目录下可以跑起来多个虚拟机。
我本来以为是通过创建多个 Vagrantfile 的方式来实现,尝试了创建另一个 Vagrantfile(比如:Vagrantfile_2),然而并没有什么卵用。
谷歌一下,查到了一些信息,一实验,果然有效。
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do | config |
config.vm.define "x" do | x |
x.vm.box = "ubuntu/trusty64"
end
config.vm.define "y" do | y |
y.vm.box = "ubuntu/trusty64"
end
config.vm.define "z" do | z |
z.vm.box = "ubuntu/trusty64"
end
end
这就可以初始化出来三个虚拟机了。
其实官网文档上都有讲,我也是看过一遍的,不过快速浏览一遍之后没有留下深刻的印象罢了。
参考
- https://docs.vagrantup.com/v2/vagrantfile/tips.html
- https://www.thisprogrammingthing.com/2015/multiple-vagrant-vms-in-one-vagrantfile/
- https://virtuallyhyper.com/2014/06/multi-vm-vagrant-setup/