37

我有以下设置:

  • 许多不同的项目是单独的 git 存储库,但都具有几乎相同的服务器配置
  • 每个项目又依赖于许多其他项目,我们使用 Composer 依赖管理器将它们组合在一起(此处为 PHP 语言)。

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

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

因此,一种选择是使用使用厨师或木偶等食谱的经理。另一种方法是编写一个 bash 文件并使用 shell 配置。

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

为什么对我来说,使用木偶/厨师似乎是一种不好的方法:

我知道我将不得不使用几种不同的配方,并且几乎总是为我的不同存储库使用相同的配方,所以我必须将它们全部包含在所有存储库中。考虑有 20 个存储库并需要 10 个配方,这意味着我需要添加 200 个配方作为 git-submodule 或类似的(每个团队成员也需要克隆存储库,然后克隆 10 个配方存储库,然后才为每个项目)。相比之下,我只需要一个带有我的 shell 脚本的小型 repo 并克隆它 20 次。

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

4

2 回答 2

27

以下文章涉及另一个 CM 工具 ( ansible ),但我认为作者在解释从 shell 脚本过渡的好处方面做得很好。

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

引用1:

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

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

报价2:

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

最后总结了 shell 脚本的好处,我认为它们适用于所有 CM 工具,puppet、chef、salt、ansible ......

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

希望这可以帮助。

于 2013-11-10T16:43:52.713 回答
2

2016 年更新

对于那些通过 Google 发现这一点的人来说,似乎有很多开发人员正在转向 Ansible,因为它的简单性。从帖子:

“Ansible 是为不喜欢部署工具的人准备的部署工具。它接近于脚本,不会用代理或集中式服务器污染您的服务器,而且立即有意义。”

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

  • 超级简单
  • 花了大约一天时间取货
  • 一旦你准备好了,真的不需要考虑它

Puppet/chef 在我的心中/堆栈中始终占有一席之地,但 Ansible 更容易。

于 2016-11-23T17:47:37.390 回答