概述
Ansible® 和 Chef 都是立足社区的开源 IT 自动化工具。两者皆可通过自动执行日常任务来简化 IT 运维和 DevOps 工作,例如配置和置备系统、部署软件,以及跨大量服务器或端点设备管理更新等任务。
Ansible 以简单易上手而闻名,这归功于其采用更加灵活的无代理方法,无需在要自动化的目标设备上安装额外软件。相比之下,Chef 采用基于代理的方法,这意味着每台机器上都需要安装软件。另一个关键区别是 Ansible 使用 YAML,这是一种基于 Python 的配置语言,更便于管理员阅读和学习,而 Chef 使用 Ruby,这是一种面向开发人员的特定领域语言(DSL),具有更陡的学习曲线。
本文将更加详细地阐述 Ansible 和 Chef 之间的异同。
常用开源自动化工具的受支持版本
Ansible 和 Chef 对比市面上其他自动化工具有什么不同?Ansible、Chef、Salt 和 Puppet 是最常用的 4 种开源 IT 自动化工具。每一款工具都采用不同的自动化方法,并且都分属于不同的软件公司的企业级解决方案。许多 IT 部门出于多重目的,会使用多个解决方案,甚至结合使用多个方案。
- Ansible 于 2015 年被红帽收购,作为红帽® Ansible® 自动化平台推向市场。
- Chef 于 2020 年被 Progress 收购,作为 Chef Enterprise Automation Stack 加入了该公司的商业产品行列。
- Salt(商业化产品称为 SaltStack)于 2020 年被 VMware 收购,纳入成为 vRealize Automation 产品组合的一部分,该产品组合最近更名为 VMware Aria Automation。VMware 于 2022 年被 Broadcom 收购。
- Puppet 由 Perforce 提供支持,可用于包括 Puppet Enterprise 和 Puppet Bolt 在内的一系列商业产品。
红帽资源
Ansible 和 Chef 的 IT 自动化方式有何不同
Ansible
Ansible 是开源的命令行式 IT 自动化软件应用,采用 Python 编写。它能够配置系统、部署软件和编排高级工作流,以支持应用部署、系统更新、网络配置和运维等工作。红帽 Ansible 自动化平台是基于 Ansible 而打造的订阅产品,可提供许多企业级功能。
Ansible 的强大源自于其社区。它的主要 GitHub 存储库吸引了成千上万的贡献者,并且截至 2022 年秋季,已有数万个项目的存储库依赖于它。其广受欢迎的用户大会 AnsibleFest 已纳入到一年一度的红帽全球峰会中,而 Ansible Meetup 聚会也定期在全球各地举办。生气勃勃的用户社区反映出 Ansible 拥有大量专业人才,许多贡献者使 Ansible 与其他流行软件项目保持着紧密可靠的集成。Ansible 用户可以访问数百种模���和插件,进一步扩展其功能。
Ansible 的设计针对简单性和易用性作了提升,同时也十分注重安全性和可靠性,尽量控制了可以移动的部件数。它使用 OpenSSH 进行传输(其他传输和拉取模式作为替代选择),并使用人类可读的语言,用户无需大量培训即可迅速上手。
Ansible 使用控制节点(Ansible 在控制节点中执行)和托管节点(自动化的设备通常是 Linux® 或 Windows 计算机)两种概念。由于 Ansible 是无代理的,它可直接与设备通信,无需在托管节点上安装应用或服务。Ansible 自动化平台可以使用一种称为自动化网格的技术将自动化作业分散到各个执行节点。
Ansible 用户可以使用 Ansible Playbook 精细编排其基础架构的不同部分,这些 Playbook 都是用人类可读的 YAML 语言编写的文件。Ansible 使用一种程序性(或命令式)编程方法,用户需要明确地指定每一步操作,告诉系统如何逐步达到预期的结果,以此来维护 IT 基础架构的配置。
Chef
Chef 是用 Ruby DSL 编写的开源 IT 自动化平台,可将基础架构转换为代码。与 Ansible Playbook 类似,Chef 使用称为“食谱”和“配方”(与它的名字刚好自成一体)的可重用脚本对跨网络配置、部署和管理基础架构的方式进行自动化,无论是在本地、云中还是在混合环境。
与 Ansible 不同,Chef 使用基于代理的架构。Chef 服务器在主机上运行,Chef 客户端则作为代理在每台客户端计算机上运行。此外,还有一个称为工作站的额外组件,其中包含所有经过测试的配置,然后这些配置会被从主 Chef 服务器拉取到客户端计算机,无需任何命令。由于管理这些拉取配置需要程序员的专业知识,因此,比起其他自动化工具, Chef 使用起来更加复杂,即使对于经验丰富的 DevOps 专业人员也是如此。
基础的自动化术语
基于代理的架构指的是一种基础架构和自动化模型,该模型需要称为代理的特定软件在托管环境中运行。代理及其所有依赖项需要安装到每一目标节点上,因此需要额外的安全检查和规则。如果自动化目标上不可使用代理或不允许运行代理,这可能会成为一个难点。代理也需要定期维护。
无代理架构(即 Ansible 使用的架构)指的是一种对 IT 设备进行自动化和管理的方式,它不需要在托管环境中安装任何代理软件。控制软件通过 SSH 连接到远程计算机,无需大量设置工作即可开始管理这些计算机。在这种架构中,一旦完成配置,便不再需要维护部署系统。
配置管理是指将计算机系统、服务器和软件维持在期望的一致状态的过程。它确保系统在以后发生变化时能够保持正常运行。配置管理可以自动化,从而降低成本、复杂性和手动错误的风险。
DevOps 和 DevSecOps 分别代表开发运维,以及开发、安全防护和运维。它们是针对文化、自动化和平台设计的方法或策略,将安全性作为贯穿整个 IT 生命周期的共同责任。DevOps 和 DevSecOps 其实是一回事,因为 DevOps 从头到尾都已然将安全防护纳入其中。但许多人现在将 DevOps 称为 DevSecOps,从而使这种含义更加明确。
YAML 的全称是 Yet Another Markup Language(即“另一种标记语言”的意思),不过也有说法是“YAML 并非标记语言”的缩写,是一种常用于编写配置文件的数据序列化语言。YAML 旨在做到人类可读且易于理解,并且可以与其他编程语言结合使用。YAML 是 JavaScript Object Notation(JSON)的超集,包括了它的所有特性,但又更为强大和灵活。
哪一种自动化解决方案更好?
挑选自动化解决方案不仅要看当前可用的功能,还要考虑平台更长远的前景。尽管 Chef 和 Ansible 都具有高度可扩展性,并且可在 Linux/Unix 上运行的控制机器以及在 Windows 上运行的节点之间提供高度的互操作性,但 Ansible 因其活跃的开源社区和红帽支持而更胜一筹。
此外,企业组织同时使用多个自动化解决方案也是常态。Ansible 可打通一个受支持的大型集成生态系统,可作为自动化工具的编排器与众多其他自动化和配置管理工具搭配。此外,Ansible 可对公共云超大规模环境(如 Amazon Web Services(AWS)、Microsoft Azure 和 Google Cloud Platform 等)中的系统进行自动化。
对于喜欢简单易用和无代理自动化解决方案的用户,与 Chef 相比,Ansible 是更好的选择。Ansible 还背靠一个庞大的贡献者和合作伙伴社群,在网络和基础架构自动化等不同的 IT 领域被广泛采用,而且因其能与其他工具集成而广受欢迎。
红帽的与众不同
红帽 Ansible 自动化平台以开源为核心,是一款经过安全强化且久经检验的订阅产品,可为企业组织提供完整的生命周期支持。其上游项目 Ansible 凝聚了全球数千名贡献者的经验和智慧。
Ansible 自动化平台囊括了众多上游组件、来自 60 多个合作伙伴的、经过红帽 Ansible 认证的 140 多个内容集,以及即服务型投资回报率(ROI)工具,可大大消除企业组织在安装、配置和支持自动化时的不确定因素。它能专门针对跨职能团队打造端到端的自动化体验,同时在自动化开发人员、工程师和运维团队之间提供即装即用的体验。
红帽 Ansible 自动化平台的功能(例如自动化分析和红帽智能分析)可提供关于自动化性能的信息,您可以根据这些信息更加精确地衡量影响并监控或解决问题。自动化网格通过独立地扩展控制和执行容量,使自动化延伸到更接近需要自动化的端点,而且几乎不会有停机时间。这使您能够从数据中心到云,再到边缘位置获得一致的自动化体验。
作为一种无代理、易用的 IT 自动化选择,Ansible 在简单易用、灵活性高和强大的用户社群方面更有显著优势。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。