知识库 : 统一开发环境——Vagrant简介

 

vagrant官网是这么说的:

Development environments made easy.
Create and configure lightweight, reproducible, and portable development environments.

 

简介:
vagrant提供了易于配置,重复性好,便携式的工作环境,这些对开发人员非常有用,它可以让开发人员可以创建简单且可重复使用的基于VirtualBox的虚拟机
(也支持VMware、docker、AWS等),这些虚拟机可以快速的创建和销毁。vagrant也可以和puppet,chef等结合,实现虚拟机管理的自动化。

 

为什么使用Vagrant:
1.开发环境的搭建过程通过文件定义:
Vagrant可以使用单个文件(或者加上几个脚本或配置文件)定义一个开发环境,消除团队成员重复搭建开发环境的工作;只需要运行vagrant up就可以搭建出一套开发环境。
2.统一开发环境:
开发环境由Vagrantfile唯一确定,是团队中每个人的开发环境完全相同,再也不会出现系统编码不一致,依赖包无法安装等跨平台问题。
3.环境隔离:
每个开发环境独立的被封装到虚拟机中,互相隔离,搭建、删除都很方便。

 

使用Vagrant可能出现的问题:
1.性能问题:
虚拟机性能有所下降,尤其是多套开发环境时,会消耗系统资源,对开发机器配置有要求。
2.网络问题:
vagrant环境第一次启动(vagrant up)时会进行环境搭建,需要通过网络获取操作系统、软件包等,网速慢时需要较长时间,而且有些软件包可能被墙不可获取,这样就需要在网络畅通后重新执行脚本来获取。

安装:
直接到https://www.vagrantup.com/downloads.html找对应平台下载安装,或者mac可以使用homebrew安装;需要安装依赖的虚拟机(默认是virtual box)

 

使用:
1.已经有人写好了Vagrantfile:
直接到Vagrantfile运行vagrant up,即可搭建并启动一套开发环境。
2.需要自己写Vagrantfile:
文件大概长成下面的样子
# vim:ft=ruby

Vagrant.configure("2") do |config|
config.vm.box_url = 'http://files.vagrantup.com/precise32.box'
config.vm.box = "precise32"
config.vm.host_name = "uradar"
config.vm.provision :shell, :path => 'provision.sh'
config.vm.network "private_network", ip: "33.33.33.10"
config.vm.network "forwarded_port", guest: 5008, host: 5008
config.vm.network "forwarded_port", guest: 5005, host: 5005
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
end
具体细节可以查看官方文档

 

操作:
1.直接使用vagrant的人:
常用的操作有vagrant up(启动环境,第一次回搭建环境)、vagrant halt(关闭环境)、vagrant ssh(通过SSH连到环境的shell)
2.需要改Vagrantfile的人:
按照语法修改,保证环境可运行