如何使用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