我目前有一个Vagrant vm,带有典型的网页设置(apache,php等)。实际的web repo签出到我的本地机器上,并通过同步文件夹和转发的apache端口(如http://127.0.0.1:4567/web)进行访问。问题是,我如何为团队做这项工作,而不仅仅是我?由于您必须同步文件夹,多个开发人员如何连接到一个VM和同步文件夹?
我最初认为共享Vagrantfile将是所有需要的,但Vagrantfile对所有apt-get命令和apache / php / node等设置都是不可知的。我不希望开发人员担心运行它们。
答案 0 :(得分:2)
这是Vagrant provisioning的用途。
Vagrant允许您自动更改框的配置或安装其他软件包作为第一个vagrant up
进程的一部分。此外,您可以为系统配置各种配置管理系统:Chef,Puppet,Ansible,CFEngine。或者你可以简单地使用shell脚本。
Sitepoint提供了一个很好的教程,用于配置带有bash脚本的Ubuntu 14.04框来安装nginx,PHP-FPM和MySQL。 Read it。稍后您可能希望转到配置管理系统。
查看Phansible project,为基于PHP的项目生成Ansible配置。可以通过PuPHPet生成PHP项目的Puppet供应。它们将让您了解如何使用Vagrant进行配置管理,并可能将其用作Vagrantfile的模板。
我总是小心翼翼地设计我的Vagrantfiles(例如,配置,同步文件夹,将主机的./src/public
映射到客户机上的/var/www/html/
,端口转发等等),这样我就可以将它们放入项目中了版本控制下的root。后来,当我的队友在他的机器上克隆项目的回购时,他可以立即发出vagrant up
并获得一个功能齐全的开发环境。
我还没有解决的唯一问题是在将新的依赖项添加到项目时更新现有的VM。现在我们更新配置脚本,如果开发人员遇到错误,他们会使用vagrant reload --provision
手动重新配置他们的VM。
P.S。我问a question关于这个问题