【问题标题】:Custom developer setup with Vagrant使用 Vagrant 自定义开发人员设置
【发布时间】:2015-05-28 17:17:30
【问题描述】:

我目前有一个带有典型 Web 设置(apache、php 等)的 Vagrant vm。实际的 Web 存储库被检出到我的本地计算机上,并通过同步文件夹和转发的 apache 端口(如http://127.0.0.1:4567/web)访问。问题是,我如何让这个团队工作,而不仅仅是我?既然要同步文件夹,怎么可能让多个开发者连接到一个虚拟机并同步文件夹呢?

我最初认为共享 Vagrantfile 就足够了,但 Vagrantfile 与所有 apt-get 命令和 apache/php/node 等设置无关。我不想让开发者担心运行这些。

【问题讨论】:

  • 为什么要为团队中的所有开发人员提供一个虚拟机?
  • @Alik 它不必是同一个虚拟机。我只是不明白对我来说维护一个 vm 模板(并定期更新)的最佳方法是什么,其他人可以将其用于他们自己的 localhost 开发并保持统一的 apt-get 包。

标签: vagrant virtual-machine virtualbox vagrantfile


【解决方案1】:

这就是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/、端口转发等),以便我可以将它们放入项目的根目录中并在版本控制下.后来当我的队友在他的机器上克隆项目的 repo 时,他可以立即发出 vagrant up 并获得一个功能齐全的开发环境。

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

附:我就这个问题问过a question

【讨论】:

  • 这看起来和我要找的完全一样。对我们来说,它可能涉及 shell 脚本。我们自定义的主要内容是 etc hosts 文件,apache vhosts,告诉 apache 和 php 安装后要添加哪些库/模块。典型的东西,但如果 puppet 或 chef 可以做到,那将节省一些时间,而不是编写一个大的 shell 脚本。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多