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

使用Vagrant自定义开发人员设置,vagrant,virtual-machine,virtualbox,vagrantfile,Vagrant,Virtual Machine,Virtualbox,Vagrantfile,我目前有一个带有典型web设置(apache、php等)的流浪vm。实际的web repo被签出到my local机器上,并通过同步文件夹和转发的apache端口(如)进行访问。问题是,我如何让这项工作为一个团队工作,而不仅仅是我自己?既然您必须同步文件夹,那么多个开发人员如何连接到一个VM并同步文件夹 我最初认为共享Vagrantfile就是所需要的,但是Vagrantfile对所有apt get命令和apache/php/node等设置都是不可知的。我不希望开发人员不得不担心运行它们。这就是

我目前有一个带有典型web设置(apache、php等)的流浪vm。实际的web repo被签出到my local机器上,并通过同步文件夹和转发的apache端口(如)进行访问。问题是,我如何让这项工作为一个团队工作,而不仅仅是我自己?既然您必须同步文件夹,那么多个开发人员如何连接到一个VM并同步文件夹

我最初认为共享Vagrantfile就是所需要的,但是Vagrantfile对所有apt get命令和apache/php/node等设置都是不可知的。我不希望开发人员不得不担心运行它们。

这就是它的用途

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

Sitepoint提供了一个很好的教程,介绍如何使用bash脚本配置Ubuntu14.04Box来安装nginx、PHP-FPM和MySQL。稍后,您可能希望转到配置管理系统

看一看为基于PHP的项目生成Ansible配置的是什么。PHP项目的Puppet配置可以通过生成。它们将使您了解如何将配置管理与Vagrant一起使用,并可能用作Vagrant文件的模板

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

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


另外,我问过这个问题

为什么您希望团队中的所有开发人员都有一个虚拟机?@Alik它不一定是同一个虚拟机。我只是不明白维护vm模板(并定期更新)的最佳方法是什么,其他人可以将其用于自己的本地主机开发并保持统一的apt get包。这与我正在寻找的完全一样。对我们来说,它可能涉及shell脚本。我们定制的主要内容是etchosts文件apachevhosts,它告诉apache和php安装后要添加哪些库/模块。典型的东西,但如果木偶或厨师可以做到这一点,这将节省一些时间,而不是写一个大壳脚本。