Vagrant provisioning shell vs puppet vs chef

时间:2013-11-09 17:19:23

标签: shell chef vagrant puppet provisioning

我有以下设置:

  • 许多不同的项目都是独立的git存储库,但都具有大致相同的服务器配置
  • 每个项目依赖于许多其他项目,我们使用作曲家依赖管理器将它们组合在一起(这里是PHP语言)。

我想使用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次。

我可能遗漏了一些东西,所以请建议我是否应该选择厨师/木偶以及为什么它有意义,即使我的存储库都有一个非常相似的服务器设置。

2 个答案:

答案 0 :(得分:25)

以下文章涉及另一个CM工具(ansible),但我认为作者在解释转换shell脚本的好处方面做得非常出色。

http://devopsu.com/blog/ansible-vs-shell-scripts/

引用1:

  

让我感到惊讶的是这些更着名的开发者的回应。他们基本上说,“这真的很酷,但我可能不会读它,因为我的手动安装/ shell脚本工作流程目前还不错。”

     

我有点震惊,但是一旦我想到了几分钟,我意识到他们的选择是完全理智和理性的,因为他们对CM工具的了解。

引用2:

  

对于他们来说,使用CM工具意味着需要花费数周的时间来学习复杂的概念,努力解决复杂的安装过程,并随着时间的推移维护复杂的系统。他们有点意识到这些好处,但使用CM工具的成本似乎太高而不值得付出努力。

最后总结了shell脚本的好处,我认为它们适用于所有CM工具,木偶,厨师,盐,ansible ......

  • 哪种方法最有可能最终进入源代码管理?
  • 哪种方法可以安全地多次安全运行?
  • 哪种方法可以轻松针对多台服务器运行?
  • 哪种方法实际验证(测试)您的服务器的正确性?
  • 哪种方法可以轻松定位某些服务器(web,db等)?
  • 哪种方法支持轻松模板配置文件?
  • 哪种方法可以轻松支持整个堆栈?

希望这有帮助。

答案 1 :(得分:2)

2016年更新

对于那些通过谷歌发现这一点的人来说,似乎a bunch of developers正朝着Ansible的方向发展。来自帖子:

  

" Ansible是不喜欢部署工具的人的部署工具。它接近于脚本,不会使用代理或集中式服务器污染您的服务器,只是立竿见影。"

我们最近在我们的微服务架构中实现了它并且它非常棒。

  • 超级简单
  • 花了一天时间来接机
  • 一旦你设置好
  • ,就不需要考虑它

木偶/厨师总是在我心中占有一席之地,但Ansible更容易。