一、Vagrant的认识
Vagrant 是一款用来构建虚拟开发环境的工具,它底层支持VirtualBox、VMware甚至AWS作为虚拟机系统。
Vagrant的作用:
- 统一开发环境。一次配置打包,统一分发给团队成员,统一团队开发环境,解决诸如”编码问题”,”缺少模块”,”配置文件不同”带来的问题;
- 避免重复搭建开发环境。新员工加入,不用浪费时间搭建开发环境,快速加入开发,减少时间成本的浪费;
- 多个相互隔离开发环境。可以在不用box里跑不同的语言,或者编译安装同一语言不同版本,搭建多个相互隔离的开发环境,卸载清除时也很快捷轻松。
二、安装
1、安装 VirtualBox
2、安装 Vagrant
下载地址:http://www.vagrantup.com/downloads
Window下可以使用软件包管理工具chocolate安装,参照https://chocolatey.org/ Mac OSX下可以使用brew安装。
3、安装系统镜像
3.1 通过Vagrant Cloud方式
- 新建一个文件夹,如AgentBox,然后进入目录
- 在https://atlas.hashicorp.com/boxes/search?utm_source=vagrantcloud.com&vagrantcloud=1上搜索想安装的镜像,找到对应的安装指令,如
$ vagrant init ubuntu/precise64; vagrant up --provider virtualbox
。
3.2 通过添加box方式
- 在http://www.vagrantbox.es/下载镜像。
- ` $ vagrant box add {title} {url}`
- 假设我们下载的镜像存放路径是~/box/precise64.box,在终端里输入:
$ vagrant box add AgentBox ~/box/precise64.box
AgentBox是我们给这个box命的名字,~/box/precise64.box是box 所在路径。 - box文件也可以是远程地址:
vagrant box add AgentBox http://files.vagrantup.com/lucid64.box
- 假设我们下载的镜像存放路径是~/box/precise64.box,在终端里输入:
- 初始化开发环境 先进入box里面,然后
$ vagrant init AgentBox
- 启动环境
vagrant up
三、常用指令
1、 添加box vagrant box add AgentBox ~/box/precise64.box
box文件也可以是远程地址 base 为默认名称 vagrant box add base http://files.vagrantup.com/lucid64.box
2、vagrant init,初始化
如果你添加的box名称不是base,那么需要在初始化的时候指定名称,例如vagrant init AgentBox
3、vagrant up,启动虚拟机
4、vagrant ssh,ssh到虚拟机
5、vagrant reload,重启虚拟机(重新载入配置文件)
6、vagrant package –base precise64_default_1447845103364_6382 –output precise64.box打包分发
7、vagrant box list
8、vagrant status
四、主要配置
开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。
1、box设置
config.vm.box = "AgentBox"
2、hostname设置
config.vm.hostname = "for_work"
3、虚拟机网络设置
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network"
4、同步目录
config.vm.synced_folder "../data", "/vagrant_data"
5、端口转发
config.vm.network "forwarded_port", guest: 80, host: 8080
6、内存和cpu核心
config.vm.provider "virtualbox" do |vb|
#Display the VirtualBox GUI when booting the machine
vb.gui = true
#Customize the amount of memory on the VM:
vb.memory = "1024"
vb.cpus = 2
vb.name = "my_vm"
end