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只是更容易。