Vagrant provisioning shell vs puppet vs chef

mpa*_*per 37 shell provisioning puppet chef-infra vagrant

我有以下设置:

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

我想使用Vagrant并在每个存储库中包含一个Vagrant文​​件,因此我的团队成员可以克隆存储库,运行vagrant up并准备就绪.

我现在的问题是针对供应问题.我需要安装几个工具和包,如apache,git,mysql和几个php包,然后下载一些文件(如最近的开发数据库转储),在/ var/www中设置所有内容并运行composer install命令.

所以这样做的一个选择是使用经理使用厨师或木偶等食谱.另一种方法是编写一个bash文件并使用shell配置.

我对主厨/木偶的经验不多,所以很自然地,使用shell选项似乎更容易,但我想知道从长远来看这是不是一个好的/可行的选择.

为什么对我来说,与木偶/厨师合作似乎是一个糟糕的方法:

我知道我将不得不使用几种不同的配方,并且几乎总是对我的不同存储库使用相同的配方,所以我必须将所有这些配方包含在所有存储库中.考虑有20个repos并需要10个食谱,这意味着我需要添加200个食谱作为git-submodule或类似(同样每个团队成员需要克隆存储库,然后克隆10个食谱存储库,然后每个都运行vagrant项目).相比之下,我只需要使用我的shell脚本创建一个小型repo并将其克隆20次.

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

Mar*_*nor 25

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

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

引用1:

令我感到惊讶的是这些更着名的开发者的回应.他们基本上说,"这真的很酷,但我可能不会阅读它,因为我的手动安装/ shell脚本工作流现在很好."

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

引用2:

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

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

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

希望这可以帮助.