什么是Vagrant
简单来说,**Vagrant 就是一个虚拟机的集成管理器**。
我们用它可以快速创建虚拟机,可以快速部署好所需的各种环境,无论你想要开发环境或是上线环境都能一键搞定。甚至你可以部署多台都没问题。
想想看,假设一台Application Server,再加一台Master Database+ 一台Slave Database,也许可以再来一台Monitor Server等等,全部都可以用你那台开发工作的电脑来实现,只要有足够内存。是不是很牛的样子?所以说,要让我们不用Vagrant,给个理由先?
一.安装Vritualbox
1.检查系统内核版本
uname -a
2.安装软件环境
yum -yinstall gcc
yum -yinstall kernel-devel
yum -yinstall kernel-headers
3.yum -y install kernel
升级完内核后要重启 reboot
4.安装dkms
注意:先安装dkms在装virtualbox。不然会报错,说你缺少依赖包
下载dkms包:
wget http://linux.dell.com/dkms/permalink/dkms-2.2.0.3-1.noarch.rpm
安装dkms包:
rpm -ivhdkms-2.2.0.3-1.noarch.rpm
5.安装所需依赖包:
yuminstall mesa-libGL
yuminstall qu-x11
yuminstall libXmu
yum installSDL
6.安装virtualbox
rpm -ivh VirtualBox-4.3-4.3.8_92456_el6-1.x86_64.rpm
7.启动virtualbox
/etc/init.d/vboxdrvsetup
二.安装Vagrant
1.下载vagrant安装包
可到vagrant官网下载
http://www.vagrantup.com/
根据个人系统选择需要下载的安装包安装即可
rpm -ivh vagrant_1.4.3_x86_64.rpm
2.下载vagrant的box
vagrant把每个打包好的虚拟机叫做box
可以到http://www.vagrantbox.es/下载你所需要的box虚拟机镜像
3.添加一个box到vagrant虚拟机里
vagrantbox add aaa(aaa代表虚拟机的名字可自行设定)CentOS-6.4-x86_64-v20130731_0.box(下好的box镜像)
4.添加到box列表
vagrantbox list
5.新建一个工作目录vm然后在vm里使用以下命令
vagrantinit aaa
然后我们会看到如下提示信息:
A`Vagrantfile`hasbeenplacedinthisdirectory.Youarenow
readyto`vagrantup`yourfirstvirtualenvironment!Pleaseread
thecommentsintheVagrantfileaswellasdocumentationon
`vagrantup.com`formoreinformationonusingVagrant.
Vagrant在vm目录会生成了一个“Vagrantfile”的设定文件。
6.启动vagrant
vagrantup
我们会看到很多信息
证明虚拟机已经启动
启动如遇到以下问题
VBoxManage startvm RedHat9 --typeheadless打开无窗口的virtualbox看报错后
执行chmod -R o-w /usr
7. 下面我们需要连接上vagrant
vagrantssh
会出现如下信息:
[root@root vagrant]# vagrantssh
Last login: Thu Mar 608:39:55 2014 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
这表示我们的已经进入到vagrant的虚拟机
默认的密码是vagrant如果想切到root用户
su - root
密码也是vagrant
8.打包自己的box虚拟机
当你把自己的虚拟机做好所需的环境,例如我的CentOS-64会升级好yum软件包,安装好MySQL、PHP等环境后,不想以后每次都把这个过程重来一次,或者假如在团队里不想每个成员的开发环境各自五花八门乱七八糟,我就可以把这个做好的CentOS-64打包出来,分享给团队成员。
vagrant package
等过一段时间后就会在我们的vm目录下生成一个新的box镜像叫做:package.box
这样以后我们就可以使用这个新的box镜像了。
用同样的方法添加到box列面中
记得一定要把vagrantfile文件删除不然无法添
vagrant box add bbbpackage.box
原来的box镜像可以删掉节省一些空间
vagrant box remove aaa
9.虚拟机设定
注:下面提到的设定有些是默认注释掉的,没有开启,务必要取消注释才会生效。
指定虚拟机使用哪个Box源。
config.vm.box ="aaa"
端口转发设定主机的8080端口映射到虚拟机的80端口
config.vm.network :forwarded_port, guest: 80, host:8080
网络连接方式
config.vm.network :private_network, ip:"192.168.33.10"(私有模式)和你host机同以网络的其它电脑看不到它
config.vm.network :public_network (公开模式)和你host机器有类似IP,同一网络其它电脑都能看到它。
一般采用私有模式,而IP也不建议用192.168开头以免冲突,例如可以用66.66.66.10
设定虚拟机内存
10.多台虚拟机设定
打开Vagrantfile配置文件将下行注视:
#All Vagrantconfiguration is done here. The most common configuration
将配置文件里改成这样:
Vagrant.configure("2")do |config|
config.vm.define :dev1 do |dev|
dev.vm.box = "vvv"
dev.vm.network :public_network
dev.vm.network :forwarded_port, guest:3306, host: 10000
end
config.vm.define :dev2 do |dev|
dev.vm.network :forwarded_port, guest:3306, host: 10001
然后我们使用vagrant up 启动,可以看到跑出来很多行信息,注意到每行前面都有类似“dev1”“dev2”这样的开头,表示各自是哪一台机子。
ssh可以指定连到哪一台:
vagrant ssh dev1
vagrant ssh dev2