如何使用Vagrantfile创建多个虚拟机
时间:2019-08-20 17:58:09 来源:igfitidea点击:
虚拟机用于各种技术POC,如系统集群、高可用性、自动化工具(如chef、puupet和ansible)等。
为了测试,有时我们需要快速创建多个虚拟机。
在本教程中,我们将使用Vagrant创建一个Vagrant文件的多个虚拟机。
Vagrant是用Ruby语言编写的。
用基本的Vagrantfile创建多个VM
我们将从一个Vagrantfile创建三个VM。
我们将为Web服务器、MySQL服务器和FTP服务器分别创建虚拟机。
这些虚拟机的操作系统可以不一样。
mkdir -p ~/vagrant_box/example1 && cd ~/vagrant_box/example1
# create file vi Vagrantfile
#paste the given below content in Vagrantfile Vagrant.configure("2") do |config| #config.vm.box = "base" config.vm.define "web" do |web| web.vm.provider "virtualbox" do |vb_web| vb_web.memory = 1024 vb_web.cpus = 2 end web.vm.box = "centos/8" web.vm.hostname = "web01" web.vm.network "private_network", ip: "192.168.33.10" end config.vm.define "mysql" do |mysql| mysql.vm.box = "debian/buster64" mysql.vm.hostname = "mysql01" mysql.vm.network "private_network", ip: "192.168.33.11" end config.vm.define "ftp" do |ftp| ftp.vm.box = "freebsd/FreeBSD-12.1-STABLE" ftp.vm.hostname = "ftp01" ftp.vm.network "private_network", ip: "192.168.33.12" end end
# now create multi VM vagrant up
在Vagrantfile中使用循环语句创建多个VM
可以使用ruby循环同时创建多个虚拟机,
这些虚拟机都将使用相同的操作系统。
mkdir -p ~/vagrant_box/example2 && cd ~/vagrant_box/example2
# create file vi Vagrantfile
Vagrant.configure("2") do |config| vm_name=['web01','mysql01','ftp01'] vm_name.each do |i| config.vm.define "#{i}" do |node| node.vm.box = "centos/8" end end end
# now create multi VM vagrant up
在Vagrantfile中使用嵌套循环和条件语句创建多个VM
因为我们可以在Vagrant中使用ruby代码,所以我们在这个例子中添加了一些嵌套循环和条件。
在这里,如果vm_name是ftp01或者web01,它将使用CentOS 8操作系统创建虚拟机,否则将使用CentOS 7操作系统创建虚拟机。
mkdir -p ~/vagrant_box/example4 && cd ~/vagrant_box/example4
# create file vi Vagrantfile
Vagrant.configure("2") do |config| vm_name=['web01','mysql01','ftp01'] vm_name.each do |i| if "#{i}" == 'ftp01' OR "#{i}" == 'web01' then config.vm.define "#{i}" do |node| node.vm.box = "centos/8" end else config.vm.define "#{i}" do |node| node.vm.box = "centos/7" end end end end
# now create multi VM vagrant up