简介
虚拟机有很多好处,不仅仅节省硬件资源,而且还可以快速切换系统环境,显然会在软件开发中起到极大作用。
在《持续交付》第十一章(11.7.1)中就提到了虚拟机环境的管理。如下图
它描述的是在你的持续集成的Jenkins CI服务器(以下简称jenkins)中,需要各种服务器来测试一个应用。我们可以快速的从虚拟机的VMM模板库中,启动需要的各种类型虚拟机,而不是每个都重新安装(省时),完成测试,产生报告后,也快速消失(省钱)。
让我们一起来看看一种漂亮的实现方案vagrant+jenkins实现技巧。
基本知识
vagrant
不同的虚拟机技术(virtualbox,vmware,xen/kvm等等)可能用不同的方法管理,vagrant是virtualbox的前端,它简化了virtualbox虚拟机的操作,而且增加了对自动化(provisioning)的puppet/chef的支持,这里就不详细介绍。vagrant的入门介绍已经很详细了,有一篇博客也可以借鉴一下。
你要知道的就是下面的几个命令
$ cd ubuntu1104-vm # 进入已有的 ubuntu 11.04 虚拟机目录
$ vagrant up # 启动 ubuntu 虚拟机
$ vagrant ssh -c "pwd"
/home/vagrant
$ vagrant halt # 停止虚拟机
jenkins CI
jenkins 是一个最常用的持续集成服务器,可单独运行或者放在Web服务器中运行。
直接启动一个任务(jenkins job)去调用vagrant操作虚拟机不是一个很好的方式,因为启动jenkins的用户(如tomcat)的权限都比较小,以防止任务误操作。
幸好jenkins有个超级棒的主从模式(master/slave)来解决。