复杂系统和 Vagrant

Complex system and Vagrant

在生产环境中,我们有如下网络基础设施:

  1. 负载均衡器(haproxy)
  2. API 服务器(PHP + apache)
  3. 前端服务器(Javascript + nginx)
  4. MySql 服务器
  5. Redis 服务器

我很乐意开始使用 Vagrant 来使生产环境与开发环境完全相同,并且让新开发人员能够轻松地快速开始工作。

最大的问题是:我应该如何构建盒子? 我应该把所有东西都放在一个盒子里还是应该建造更多盒子?有多少?

这取决于您与开发人员达成的约定。问自己一个问题:您希望在哪种类型的结构中工作:分布式还是集中式。

如果答案是"distributed",您可以为每个项目制作一个盒子。当你需要完成任何前几次修改的项目时,你不会搞砸了。但是这种方法会占用大量内存和存储空间space,如果您的大部分项目都基于相同的生产环境,有时它没有意义。

如果答案是"centralized",这意味着在同一环境中构建的所有项目一个盒子就足够了。它可以节省大量时间,但也很容易在您查找旧项目时混淆。您可以在 Vagrant 框中为每个项目设置 Docker 个容器。

此外,我想向您推荐 Packer 盒子构建的用法。这绝对是实现这一目标的明确工​​具,它可以为每个虚拟化环境制作 "ready to work" Vagrant box 并执行 shell scripts/CMS 脚本。只需将生产环境所需的一切都放入盒子中,以后开发人员可以通过 Vagrant provisioning 添加一些包依赖,并通过 Vagrantfile 设置共享它。