我有以下设置:
我想使用Vagrant并在每个存储库中包含一个Vagrant文件,因此我的团队成员可以克隆存储库,运行vagrant up
并准备就绪。
我现在的问题是针对配置。我需要安装几个工具和软件包,如apache,git,mysql和几个php软件包,然后下载一些文件(比如最近的开发db转储),在/ var / www中设置所有内容并运行composer install命令。
所以这样做的一个选择是使用经理使用厨师或木偶等食谱。 另一种方法是编写一个bash文件并使用shell配置。
我对主厨/木偶的经验不多,所以很自然地,使用shell选项似乎更容易,但我想知道从长远来看这是不是一个好/可行的选择。
为什么对我来说,与木偶/厨师合作似乎是一个糟糕的方法:
我知道我将不得不使用几种不同的食谱,并且几乎总是会为我的不同存储库使用相同的食谱,所以我必须将所有这些食谱包含在所有存储库中。考虑有20个repos并需要10个食谱,这意味着我需要添加200个食谱作为git-submodule或类似(同样每个团队成员需要克隆存储库,然后克隆10个食谱存储库,然后每个都运行vagrant项目)。相比之下,我只需要使用我的shell脚本创建一个小型repo并将其克隆20次。
我可能遗漏了一些东西,所以请建议我是否应该选择厨师/木偶以及为什么它有意义,即使我的存储库都有一个非常相似的服务器设置。
答案 0 :(得分:25)
以下文章涉及另一个CM工具(ansible),但我认为作者在解释转换shell脚本的好处方面做得非常出色。
http://devopsu.com/blog/ansible-vs-shell-scripts/
引用1:
让我感到惊讶的是这些更着名的开发者的回应。他们基本上说,“这真的很酷,但我可能不会读它,因为我的手动安装/ shell脚本工作流程目前还不错。”
我有点震惊,但是一旦我想到了几分钟,我意识到他们的选择是完全理智和理性的,因为他们对CM工具的了解。
引用2:
对于他们来说,使用CM工具意味着需要花费数周的时间来学习复杂的概念,努力解决复杂的安装过程,并随着时间的推移维护复杂的系统。他们有点意识到这些好处,但使用CM工具的成本似乎太高而不值得付出努力。
最后总结了shell脚本的好处,我认为它们适用于所有CM工具,木偶,厨师,盐,ansible ......
希望这有帮助。
答案 1 :(得分:2)
2016年更新
对于那些通过谷歌发现这一点的人来说,似乎a bunch of developers正朝着Ansible的方向发展。来自帖子:
" Ansible是不喜欢部署工具的人的部署工具。它接近于脚本,不会使用代理或集中式服务器污染您的服务器,只是立竿见影。"
我们最近在我们的微服务架构中实现了它并且它非常棒。
木偶/厨师总是在我心中占有一席之地,但Ansible更容易。