我有以下设置:
- 许多不同的项目,它们是独立的git仓库,但大部分具有相同的服务器配置
- 每个项目又依赖于许多其他项目,我们使用composer依赖管理器将它们组合在一起(PHP语言)。
vagrant up
,然后就可以开始工作了。现在我的问题针对于如何进行预配。我需要安装几个工具和软件包,例如apache、git、mysql和一些PHP软件包,然后下载一些文件(比如最近的开发数据库转储),在/var/www中设置好一切,并运行composer install 命令。
因此,做这件事的一个选项是使用像chef或puppet之类的管理工具及其 “recipes”(配方)。 另一个选择是编写bash文件并使用shell预配功能。
我没有太多使用chef/puppet的经验,所以自然而然,使用shell选项似乎更容易,但我想知道这是否不是长期来看一个好的/可行的选项。
为什么我认为采用puppet/chef方法不好:
我明白我将不得不使用几个不同的“recipes”,并且几乎总是会为我的不同存储库使用相同的“recipes”,因此我将不得不在所有存储库中都包含它们。考虑到有20个存储库需要10个“recipes”,那意味着我需要添加200个“recipes”作为git子模块或类似物(每个团队成员都需要克隆存储库,然后克隆10个配方存储库,然后才能为每个项目运行vagrant up)。相比之下,我只需要一个小型存储库,其中包含我的shell脚本,并将其克隆20次即可。
我可能缺少了某些东西,请建议我是否应该选择chef/puppet,为什么即使我所有的存储库都具有非常相似的服务器设置,也是有意义的。