Hardog's blog

trace forever

Group: 572218159
Email: 1273203953@qq.com
Location: hangzhou·zhejiang
GitHub: https://github.com/hardog

场景需求

团队开发项目一般都会遇到以下问题:

因此如果能够统一团队的开发环境无疑能够减少很多工作量同时遇到问题也能够有效及时的发现并处理, 以下介绍使用Vagrant来解决该问题。

vagrant介绍

Vagrant是一个基于Ruby的工具, 用于创建和部署虚拟化开发环境. 可以创建基于Virtual box、VMware、KVM的虚拟化化环境.

前提

以下步骤需要先安装vagrant和virtual box, 下载链接:vagrant, virtualbox, 注意这里virtual box版本必须和制作成的box里虚拟机客户端增强版本匹配, 否则后续无法挂载物理机目录.

box下载

这里专门提供了一系列box的下载链接, 不用自己去手动制作一个box前往下载列表, 当然如果非要自己制作一个box, 过程可参考box制作过程.

添加box

下载了一个box之后可使用如下命令添加box, 并登录虚拟机:

1
$ vagrant box add [custom box name] [box name].box 	// windows下会生成.vagrant文件夹
$ vagrant init [custom box name] 	// 生成Vagrantfile配置文件
$ vagrant up					// 启动虚拟机
$ vagrant ssh					// 登录虚拟机

另外关闭虚拟机的命令为: $ vagrant halt [--force]

配置box

添加完box之后可使用如下图所示命令配置虚拟机, Vagrantfile中各参数说明如图所示:
vfile

至此box制作就算完成了, 之后只需要使用vagrant up && vagrant ssh启动并进入虚拟机即可, 项目需要的环境依赖等都可以预先在虚拟机里面安装好然后制作成box分发给团队成员即可. 如下介绍了基于已有虚拟机制作新box的命令.

box重制作

如果需要对当前正在使用的虚拟机制作一个box只需要找到Virutal box(以virtual为例)安装目录如下所示:
vbdir
使用如下命令生成box:
box

让脚本跟随box自动启动

image

如图所示:在Vagrantfile文件开头添加如下ruby定义的变量脚本, 可自由修改:

1
$script = <<SCRIPT
// 此处开始到SCRIPT结束为普通命令行命令, 根据需要修改
echo auto task
sudo su root
which node
node -v
cd /data/webroot/HMP2-polymer
pwd
whoami
/usr/local/bin/npm start
echo visit http://hmp-dev.fi.beibei.com
SCRIPT

行下面添加行:

1
Vagrant.configure(2) do |config| 该行后面添加如下行
config.vm.provision "shell", inline: $script

添加provision后,使用如下命令启动box即可

1
$vagrant up --provision