如何使用VAGRANT构建理想的开发环境

  在这个模型中,大家交流的基础是虚拟机。虚拟机随时被创建,随时又销毁,有一个box服务器 vagrant repo 来统一存储所有box并提供上传/下载服务。box服务器提供两类box:

  基准box。每天半夜从GitHub pull相应branch的代码,并辅以对应的database,自动打包成一个基准box。每个活跃的branch每天都会有一个新的基准box。基准box保存一周足矣。大家新的工作的基础是基准box。

  PR box。解决线上问题时,和QA,CI交流使用的box。

  任意一个box都是一个沙箱,它包含和线上环境同版本的操作系统,运行环境。同时里面有对应branch的代码库和数据库。数据库采用线上数据库的一个子集,可以让系统正常运行即可。box和用户的host OS间可以共享目录,比如说代码的目录,这样可以让用户通过host OS上的个性化编辑环境撰写代码。此外,box里的port和host OS的port要能一一映射,这样用户完全具有本地的测试体验。

  详细的环境和工作场景参见下图:

  适用场景

  这样的开发环境能满足本地办公团队,甚至远程办公团队的需要。

  同一个地点办公的团队,vagrant repo 服务器可以放在本地,以获得好的下载速度。

  异地办公或者服务于开源项目的松散团队,可以把 bagrant repo 放在一个公网服务器,让参与者都能访问(安全性不在本文讨论)。访问速度的问题可以通过本地缓存来解决,这样在多人下载同一个box时会有近乎本地访问的体验。

  4. 免责声明

  如引文所述,本文想法尚未来得及实践,所以不保证能正常运行,所以 “try it at your own risk”。笔者个人觉得这个想法的靠谱率在 90% 以上。