开发CAAS需要一堆机器,有时候还需要一堆干净的机器用来测试初始化集群和基础服务,如果每次都手工安装虚拟机,很显然效率太低,于是就开始使用vagrant。
一、下载
需要下载:
- virtualbox https://www.virtualbox.org/
- vagrant https://www.vagrantup.com/ 比较坑的是下载最新版后不能正常使用,告诉我最新的vagrant1.8.5不能创建linux虚拟机,要退回到1.8.4。好吧,我使用1.8.4,然后一堆错,告诉我不支持最新的virtualbox,要退回到5.0.x...
二、下载box
好不容易装好了,下载一个box开始测试,测试之前最好设置一下VAGRANT_HOME系统变量,否则会将box文件什么的都放到用户目录。新建一个目录G:/caas/,进入命令行切换到此目录,执行
vagrant init puppetlabs/centos-7.2-64-nocm
这时会下载一个centos7.2的box,并在目录下生成一个名为Vagrantfile的文件。 所谓box是一个打包好的虚拟机,和docker的镜像有点类似。
三、配置集群
参考如下:
# -*- mode: ruby -*-# vi: set ft=ruby : servers = { :hadoop1 => '192.168.1.11', :hadoop2 => '192.168.1.12', :hadoop3 => '192.168.1.13', :hadoop4 => '192.168.1.14', :hadoop5 => '192.168.1.15', :hadoop6 => '192.168.1.16', :hadoop7 => '192.168.1.17' } Vagrant.configure("2") do |config| config.vm.box = "puppetlabs/centos-7.2-64-nocm" config.vm.box_check_update = false servers.each do |server_name, server_ip| config.vm.define server_name do |server_config| server_config.vm.hostname = "#{server_name.to_s}" server_config.vm.network :private_network, ip: server_ip server_config.vm.provider "virtualbox"do |vb| vb.name = server_name.to_s vb.memory = "2048" vb.cpus = 2endendendend
可以看到配置了7台机器,每个2核2G内存。
四、生成虚拟机并启动
1、首先可以迅雷手动去下载centos7.2版本的virtualbox(非必须)
https://atlas.hashicorp.com/puppetlabs/boxes/centos-7.2-64-nocm/versions/1.0.1/providers/virtualbox.box
2、用varant box 添加box,名字要和上一步init的名字保持一致(非必须)
vagrant box add --name puppetlabs/centos-7.2-64-nocm G:\caas\virtualbox.box
3、输入
vagrant up
可以看到依次生成了虚拟机并启动(如果中途下载速度特别慢的话,可以中断然后执行完上两步之后再执行up命令),控制台输出类似于:
G:\Vagrant\caas>vagrant up Bringing machine 'caas1' up with 'virtualbox' provider... Bringing machine 'caas2' up with 'virtualbox' provider... Bringing machine 'caas3' up with 'virtualbox' provider... Bringing machine 'caas4' up with 'virtualbox' provider... Bringing machine 'caas5' up with 'virtualbox' provider... Bringing machine 'caas6' up with 'virtualbox' provider... Bringing machine 'caas7' up with 'virtualbox' provider... ==>caas1:Importing base box 'puppetlabs/centos-7.2-64-nocm'... ==>caas1:MatchingMAC address for NAT networking... ==>caas1:Setting the name of the VM: caas1 ==>caas1:Clearing any previously set network interfaces... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stder