stream浪者configuration壳vs木偶vs厨师

我有以下设置:

  • 许多不同的项目是独立的git仓库,但都具有相同的服务器configuration
  • 每个项目依次依赖于许多其他项目,我们使用composer php依赖pipe理器把它们放在一起(PHP语言在这里)。

我想使用Vagrant,并在每个存储库中包含一个Vagrant文​​件,所以我的团队成员可以克隆一个存储库,运行vagrant up并准备好去。

我现在的问题是针对configuration。 我需要安装一些工具和软件包,比如apache,git,mysql和几个php软件包,然后下载一些文件(比如最近的一个开发数据库转储文件),把所有东西放在/ var / www中,然后运行composer install命令。

所以一个select是使用厨师或傀儡等食谱的经理。 另一种方法是编写一个bash文件并使用shellconfiguration。

我对厨师/傀儡没有太多的经验,所以自然而然,使用shell选项似乎更容易,但是我想了解,如果这从长远来看不是一个好的/可行的select。

为什么对我来说这似乎是一个不好的方法去与木偶/厨师:

我明白,我将不得不使用几种不同的食谱,并且几乎总是对我的不同的储存库使用相同的食谱,所以我将不得不将所有的食谱包括在所有的储存库中。 考虑有20个回购,需要10个配方,这意味着我将需要添加200个食谱作为一个git子模块或类似(也是每个团队成员需要克隆存储库,然后克隆10个配方库,然后只运行vagrant了每项目)。 相反,我只需要用我的shell脚本有一个小的回购,并克隆它20次。

我可能错过了一些东西,所以请告知我是否应该select厨师/傀儡,为什么它有意义,即使我的存储库都有一个非常类似的服务器设置。

下面的文章涉及到另一个CM工具( ansible ),但是我认为作者很好的解释了从shell脚本转换的好处。

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

报价1:

真正让我吃惊的是这些更有名的开发者的回应。 他们基本上说:“这真的很酷,但我可能不会读它,因为我的手动安装/ shell脚本工作stream程现在是好的。

我有些震惊,但是一旦我想了几分钟,我意识到,根据他们对CM工具的了解,他们的select是完全理智和理性的。

报价2:

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

最后总结了shell脚本的优点,我认为它们适用于所有的CM工具,木偶,厨师,盐,等等。

  • 哪种方法最有可能在源代码控制中结束?
  • 哪种方法可以放心地多次运行?
  • 哪种方法可以轻松地针对多个服务器运行?
  • 哪个方法实际validation(testing)您的服务器的正确性?
  • 哪种方法可以轻松地定位某些服务器(Web,数据库等)?
  • 哪种方法可以轻松地模板化你的configuration文件?
  • 哪种方法可以轻松支持整个堆栈?

希望这可以帮助。

2016年更新

对于那些通过Google发现的人来说,似乎有一大堆开发人员正朝着Ansible走来走去。 来自:

“Ansible是那些不喜欢部署工具的人的部署工具,它接近于脚本,不会污染你的服务器,代理或者集中的服务器,只是立即有意义。

我们最近在我们的微服务架构中实现了它,这真是太棒了。

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

木偶/厨师总是有我的心脏/堆栈的地方,但Ansible只是更容易。