为什么是chef、puppet、ansible、salt等?

0 puppet chef chef-solo ansible

DevOps 工具生态系统让我感到困惑。服务器编排/管理空间中的每个人都在使用自己的专有格式,而不是在任何地方都可以使用的 shell 脚本。Ansible 有他们的 YAML 剧本,Puppet 有它的类/图语言,salt like ansible 有某种 YAML 格式,chef 是一个嵌入式 Ruby DSL。在所有这些方法中,我最喜欢厨师,因为它可以做最简单的事情。所以我想,当您使用这些工具之一时,一个好处是可以更好地了解队列,但这与实际配置和供应组件正交。

我不太明白为什么每个人都试图用 YAML 重新发明 shell 脚本,因为通常ssh -t我需要用一些 shell 脚本库来完成工作。这些脚本通常打包为独立的 tar 文件,并且小而简单,可以根据需要进行混合和匹配。除了bash几乎可以在任何地方工作之外,它们具有零依赖性。那么为什么像这样的简单解决方案对于 ansible、puppet、chef 等来说还不够好?通过用bash其他格式替换脚本,所有这些解决方案有什么好处?

Dre*_*ury 7

使用配置管理软件有很多充分的理由。虽然有许多不同的工具,但我将重点介绍 Puppet 的一些功能(主要概念大体相同)。

注意:虽然您可能会争辩说编写自己的脚本可以实现相同的结果,但大概您必须编写和维护大型代码库才能实现相同的任务。

声明式

作为一种声明式、基于模型的 IT 自动化方法,它允许您使用 Puppet 配置语言定义基础架构的所需状态或“内容”。

强制执行所需状态

一旦部署了这些配置,Puppet 会自动安装必要的包并启动相关服务,然后定期强制执行所需的状态。

自动化平凡的框架

在自动化平凡的工作中,Puppet 使您能够从事更具挑战性且业务影响更大的项目。

一个例子,安装一个包

你可以做各种有趣的事情,比如安装包(在各种操作系统上),或者确保只安装包的特定版本。

package { "screen":
    ensure => "installed"
}
Run Code Online (Sandbox Code Playgroud)

上面的代码确保安装了包“screen”,这将适用于 Debian(使用 apt)或 Redhat(使用 yum)。您不需要为每个包管理系统维护自己的脚本或逻辑,Puppet 会为您完成这些。

还有更多

在模板、事实、mcollective、角色、GUI、事件检查器、试运行、支持和 puppetforge 方面还有很多其他好处。