为什么选择 chef、puppet、ansible、salt 等?

为什么选择 chef、puppet、ansible、salt 等?

我对 DevOps 工具生态系统感到困惑。服务器编排/管理领域中的每个人都在使用自己的专有格式,而不是使用随处可用的 Shell 脚本。Ansible 有自己的 YAML 剧本,Puppet 有自己的类/图形语言,像 ansible 这样的 salt 有某种 YAML 格式,chef 是一种嵌入式 Ruby DSL。在所有这些方法中,我最喜欢 chef,因为它做的事情尽可能简单。所以我想一个好处是当您使用其中一种工具时,可以更好地了解车队,但这与实际的配置和配置组件无关。

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

答案1

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

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

声明式

作为一种声明性的、基于模型的 IT 自动化方法,它允许您使用 Puppet 配置语言定义基础设施的所需状态 - 或“什么”。

执行期望状态

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

自动化日常事务的框架

在实现日常自动化的过程中,Puppet 让您可以自由地从事对业务影响更大、更具挑战性的项目。

举例来说,安装一个包

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

package { "screen":
    ensure => "installed"
}

上述代码确保安装了软件包“screen”,并且该软件包可以在 Debian(使用 apt)或 Redhat(使用 yum)上运行。您无需为每个软件包管理系统维护自己的脚本或逻辑,Puppet 会为您完成这些工作。

还有更多

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

相关内容