Puppet 和 Chef 工具的新功能。似乎他们正在做的工作可以用 shell 脚本来完成。也许它是在 shell 脚本中完成的,直到这些出现。
我同意它们更具可读性。但是,除了可读性之外,是否还有其他优于 shell 脚本的优点?
我是一名 Web 开发人员,但我也对一些管理任务感兴趣。因此,从纯管理转向开发运营的新举措对我来说很方便。
无论如何,我有一些问题要将一些事情放入关系中。也许没有,所以我想寻求帮助澄清。
基本上,我想关联的是四种类型的软件(根据我的理解)。确切的产品并不重要,您可以放置任何类似的软件作为替代:
问题 1:我的解释是对的,还是我对这些消费的某些(或全部)有误?
问题 2:我如何混合所有这些工具?这有什么意义吗?
在我的想象和我的理解中,你可以去
这样对吗?如果是这样,你能给我一个关于如何开始使用所有这些的建议(同时使用很多,我还不知道从哪里开始)?
我已经用谷歌搜索并阅读了“to-puppet-or-to-chef-that-is-the-question”文章。
我对用例感兴趣,在现实世界的实现中,人们根据实际问题选择了一个或另一个。
我对与 cobbler问题的集成特别感兴趣(我知道 puppet 是这个方向的标准方法);作为任何人在鞋匠 - 厨师整合方面的任何经验?
提前致谢
我使用并喜欢 Puppet。我搬到了一家新公司,他们正在收养厨师。所以我正在尝试学习 Chef,但我很难将它们拼凑在一起,因为我仍然在 Puppet 中思考 =)
这些是我的问题:
我完成了入门教程,我看到他们有 EC2 教程,但我从未使用过 EC2,所以我很难理解它们。在这一点上,我已经托管了 Chef 并且我开始尝试配置单个节点。我从这里去哪里?我需要开始看公共食谱吗?
Opscode 上的文档还可以,但不如 Puppet 的好。我的搜索中是否还有其他好的厨师资源?
我正在考虑推出一种新的配置管理工具来取代我们自己开发的解决方案。事实上的标准是 Chef 和 Puppet,它们都是以 Ruby 为中心的(尽管显然可以用于部署非 Ruby 环境)。我们绝大多数的开发都是用 Python 完成的,我们的内部部署工具大量使用Fabric。因此,我正在学习Salt,因为它也是 Python,尽管它不如 Chef 或 Puppet 成熟。但由于我对这些选项不够熟悉,我发现很难进行比较。
除了较小的社区之外,我会通过使用 Salt 而不是 Puppet/Chef 来放弃任何重要的东西吗?
我发布这个问题已经六个月了。尽管它已关闭,但它已被观看了 1,000 多次,所以我想我会评论我的经历。
我最终决定使用 Puppet,因为它有一个更大的社区。然而,这是一次非常令人沮丧的经历,主要是由于复杂的 Puppet 配置语法。因为我现在有了比较两者的参考框架,所以我最近又看了看 Salt——我不会回去了。非常非常酷。我最喜欢的东西:
推和拉配置模型的无缝集成。Puppet 使用拉模型(节点定期轮询服务器以获取更新)并有一个名为 Marionette 的姊妹组件用于推送更改。两者对我都很重要,我更喜欢 Salt 的工作原理。当你有很多节点时,Salt 的执行速度也会快得多。
配置语法使用 YAML,它只是一种使用缩进和项目符号的简单文本格式。您也可以通过模板选择使用其他配置格式。根据我的经验,这使 Salt 的学习和维护难度提高了大约 10 倍。
基于Python。这是我最初开始研究 Salt 的最大原因。这最终成为我留下来的次要原因之一。但是,如果您是像我们这样的 Python 商店,则可以更轻松地开发 Salt 插件。
我正在为我的团队寻找自动化部署解决方案,并且过去几天一直在与 Chef 一起玩。我已经能够使用 Chef-solo 从基础 Red Hat VM 运行一个简单的 Web 应用程序。
我们的最终目标是使用 Chef(或其他系统)在我们运行构建时自动将应用程序拓扑部署到云中。我们的流程基本上是这样运行的:
让 Chef 服务器运行有什么好处和/或用例?
与使用 Chef-solo 并拥有从 SCM 提取食谱的脚本相比,使用 Chef 服务器持有并从 SCM 获取食谱有什么主要好处吗?
仅当当前环境为“dev”时,我才想运行 cookbook_file 资源。这怎么表达?
文档表明:
在配方中,像这样的代码块会很有用:
Run Code Online (Sandbox Code Playgroud)qa_nodes = search(:node,"chef_environment:QA") qa_nodes.each do |qa_node| # Do useful specific to qa nodes only end
但我不确定那是我想要的——事实上它是一个循环似乎是错误的。
我打算用厨师或傀儡来做管理(我更多地考虑厨师,因为它更年轻,我对它有更好的感觉)。
在两个主页上我都看到有一个“企业版”要花钱,我不打算购买任何东西。如果我不买厨师/木偶,我会错过什么?
大厨提供什么东西要花钱?
Puppet 提供什么需要花钱的产品?
我从他们的网站上看不太清楚,因为它有点晦涩。
对于那些已经在运行配置管理工具的人来说,这可能是一个简单的问题。诸如 Puppet 或 Chef 之类的配置管理工具是否是使已安装的软件包保持最新的正确方法?
假设我运行了许多服务器,主要基于 Debian 和 Ubuntu。当安全更新或错误修复出现时,配置管理工具是否可以更轻松地更新从存储库安装的包?
我目前运行“无人值守升级”以让系统自动安装安全更新,但我仍然需要连接到服务器并aptitude update && aptitude safe-upgrade经常运行。当然,服务器越多,这就会变得无聊、乏味且容易出错。
诸如 Puppet 或 Chef 之类的工具是否是使安装的软件包保持最新的正确方法?你们中有人使用这些工具来避免aptitude在 15 台服务器上手动运行或等效吗?我很确定这些问题的答案是“是的,当然!”
但是在哪里可以找到有关此特定用例的更多信息?我还没有时间深入研究 Puppet 或 Chef,示例食谱或课程仅展示了安装特定软件包(例如 ssh)的或多或少的琐碎示例。除了官方文档之外,您还有其他资源可以推荐吗(当然,一旦我知道哪些工具适合我,我就会研究文档)。
更成熟的配置管理 (CM) 系统(如 Puppet 和 Chef)使用基于拉取的方法:客户端定期轮询集中主节点以获取更新。其中一些也提供了一种无主方法(因此,基于推送),但声明它“不适用于生产”(Saltstack)或“可扩展性较差”(Puppet)。我所知道的唯一一个从一开始就基于推送的系统是亚军 Ansible。
基于拉的系统的具体可扩展性优势是什么?为什么据说添加更多 pull-masters 比 push-agents 更容易?
例如,agiletesting.blogspot.nl写道:
在“拉”系统中,客户端相互独立地联系服务器,因此整个系统比“推”系统更具可扩展性
另一方面,Rackspace 证明他们可以使用基于推送的模型处理 15K 系统。
我们发誓使用拉式方法来维护基础架构,使用 SUP、CVSup、rsync 服务器或 cfengine 等工具。不是将更改推送给客户端,每个单独的客户端计算机都需要负责在启动时轮询黄金服务器,并在之后定期轮询,以保持自己的 rev 级别。在采用这个观点之前,我们开发了大量基于 ssh、rsh、rcp 和 rdist 的基于推送的脚本。我们在 r-commands(或 ssh)中发现的问题是:当您运行基于 r-command 的脚本将更改推送到您的目标机器时,很可能如果您有 30 多个目标主机,其中一个将在任何给定的时间下来。维护委托机器的列表变成了一场噩梦。在编写代码来纠正这个问题的过程中,你最终会得到精心设计的包装器代码来处理:死主机超时;记录和重试死主机;分叉并运行并行作业以尝试在合理的时间内访问许多主机;最后检测并防止在所有出站 rsh 会话中耗尽源计算机上所有可用 TCP 套接字的情况。然后,您仍然面临着将您刚才所做的所有内容放入安装映像中的问题,以便将来安装所有新主机,以及为任何已死且明天必须重建的主机重复此操作。在我们为实现基于 r-command 的复制而遇到的麻烦之后,我们发现它只是不值得。我们不打算再次使用 r-commands 或任何其他推送机制来管理基础设施。它们的扩展性不如基于拉动的方法。分叉并运行并行作业以尝试在合理的时间内访问许多主机;最后检测并防止在所有出站 rsh 会话中耗尽源计算机上所有可用 TCP 套接字的情况。然后,您仍然面临着将您刚才所做的所有内容放入安装映像中的问题,以便将来安装所有新主机,以及为任何已死且明天必须重建的主机重复此操作。在我们实现基于 r-command 的复制遇到麻烦之后,我们发现它不值得。我们不打算再次使用 r-commands 或任何其他推送机制来管理基础设施。它们的扩展性不如基于拉动的方法。分叉并运行并行作业以尝试在合理的时间内访问许多主机;最后检测并防止在所有出站 rsh 会话中耗尽源计算机上所有可用 TCP 套接字的情况。然后,您仍然面临着将您刚才所做的所有内容放入安装映像中的问题,以便将来安装所有新主机,以及为任何已死且明天必须重建的主机重复此操作。在我们为实现基于 r-command 的复制而遇到的麻烦之后,我们发现它只是不值得。我们不打算再次使用 r-commands 或任何其他推送机制来管理基础设施。它们的扩展性不如基于拉动的方法。最后检测并防止在所有出站 rsh 会话中耗尽源计算机上所有可用 TCP 套接字的情况。然后,您仍然面临着将您刚才所做的所有内容放入安装映像中的问题,以便将来安装所有新主机,以及为任何已死且明天必须重建的主机重复此操作。在我们实现基于 r-command 的复制遇到麻烦之后,我们发现它不值得。我们不打算再次使用 r-commands 或任何其他推送机制来管理基础设施。它们的扩展性不如基于拉动的方法。最后检测并防止在所有出站 rsh 会话中耗尽源计算机上所有可用 TCP 套接字的情况。然后,您仍然面临着将您刚才所做的所有内容放入安装映像中的问题,以便将来安装所有新主机,以及为任何已死且明天必须重建的主机重复此操作。在我们实现基于 r-command …