使用 Vagrant 自定义开发人员设置

Custom developer setup with Vagrant

我目前有一个带有典型网络设置(apache、php 等)的 Vagrant 虚拟机。实际的网络回购被检出到我的本地机器上,并通过同步文件夹和转发的 apache 端口(如 http://127.0.0.1:4567/web)访问。问题是,我如何让这个团队为团队工作,而不是只为我工作?既然要同步文件夹,那么多个开发者如何连接到一台虚拟机并同步文件夹呢?

我最初认为共享 Vagrantfile 将是所有需要的,但 Vagrantfile 与所有 apt-get 命令和 apache/php/node 等设置无关。我不希望开发人员不得不担心 运行 那些。

这就是 Vagrant provisioning 的用途。

Vagrant 允许您自动更改框的配置或安装其他软件包作为第一个 vagrant up 过程的一部分。此外,您可以为您的系统配置各种配置管理系统:Chef、Puppet、Ansible、CFEngine。或者您可以简单地使用 shell 脚本。

Sitepoint 提供了一个很好的教程,介绍如何使用 bash 脚本配置 Ubuntu 14.04 box 来安装 nginx、PHP-FPM 和 MySQL。 Read it。稍后您可能想转向配置管理系统。

看看Phansible project which generates Ansible provisionings for PHP-based projects. Puppet provisioning for PHP-projects can be generated via PuPHPet。他们会让你了解如何使用 Vagrant 进行配置管理,并可能用作你的 Vagrantfile 的模板。

我总是尝试仔细制作我的 Vagrantfile(配置、同步文件夹,例如,将主机的 ./src/public 映射到客户机上的 /var/www/html/、端口转发等)以便我可以将它们放入在版本控制下进入项目的根目录。稍后当我的队友在他的机器上克隆项目的 repo 时,他可以立即发布 vagrant up 并获得一个功能齐全的开发环境。

我唯一没有解决的问题是在项目中添加新的依赖项时更新现有的虚拟机。现在我们更新配置脚本,如果开发人员遇到错误,他们会使用 vagrant reload --provision.

手动重新配置他们的 VM

P.S。我问 a question 关于这个问题