快速跳转

Ansible vsChef:入门须知

复制 URL

Ansible® 和 Chef 都是社区开源的 IT 自动化工具。两者皆可通过自动执行日常任务来简化 IT 运维和 DevOps 工作,例如配置和置备系统、部署软件,以及跨大量服务器或端点设备管理更新等任务。

Ansible 以简单易上手而闻名,这归功于其采用更加灵活的无代理方法,无需在要自动化的目标设备上安装额外软件。相比之下,Chef 采用基于代理的方法,这意味着每台机器上都需要安装软件。另一个关键区别是 Ansible 使用 YAML,这是一种基于 Python 的配置语言,更便于管理员阅读和学习,而 Chef 使用 Ruby,这是一种面向开发人员的特定领域语言(DSL),具有更陡的学习曲线。

本文将更加详细地阐述 Ansible 和 Chef 之间的异同。

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 AzureGoogle Cloud Platform 等)中的系统进行自动化。

对于喜欢简单易用和无代理自动化解决方案的用户,与 Chef 相比,Ansible 是更好的选择。它还背靠一个庞大的贡献者和合作伙伴社群,在网络和基础架构自动化等不同的 IT 领域被广泛采用,而且因其能与其他工具集成而广受欢迎。 

红帽 Ansible 自动化平台以开源为核心, 是一款经过强化且久经测试的订阅产品,可为企业提供完整的生命周期支持。其上游项目 Ansible 凝聚了全球数千名贡献者的经验和智慧。 

Ansible 自动化平台囊括了众多上游组件、来自 60 多个合作伙伴的经过红帽 Ansible 认证的 140 多个内容集,以及即服务型投资回报率(ROI)工具,可大大消除您的企业在安装、配置和支持自动化时的不确定因素。它能专门针对跨职能团队打造端到端的自动化体验,同时在自动化开发人员、工程师和运维团队之间提供即装即用的体验。

红帽 Ansible 自动化平台的功能(如红帽智能分析和自动化分析)可提供关于自动化性能的可访问信息,帮助您更加精确地衡量影响并监控或解决问题。自动化网格通过独立地扩展控制和执行容量,使自动化延伸到更接近需要自动化的端点,而且几乎不会有停机时间。这使您能够从数据中心到云,再到边缘位置获得一致的自动化体验。

作为一种无代理、易用的 IT 自动化选择,Ansible 还因为其简单易用、灵活性高和强大的用户社群脱颖而出。

扩展阅读

文章

Ansible 基础知识入门

Ansible 是一种对 IT 流程自动化的工具,如置备和配置管理等流程。希望能通过这篇 Ansible 关键概念的介绍,帮助您了解 Ansible 的基础知识。

文章

什么是业务流程管理?

业务流程管理(BPM)是指对端到端业务流程进行建模、分析和优化,以实现战略业务目标。

文章

为什么选择红帽实现自动化?

红帽 Ansible 自动化平台中包含了在团队间分享自动化以及实现企业级自动化所需的各种工具。

详细了解自动化

产品

红帽的战略顾问将从大局出发,以战略性视角审视企业发展,分析您当前面临的业务挑战,并提供全面、低成本、高效益的解决方案,帮助您轻松应对各项挑战。

无论您处于自动化之旅的哪个阶段,这个实施企业级自动化的平台都能助您一臂之力

相关资源

培训

免费培训课程

Ansible 必备:轻松实现自动化之技术概览

免费培训课程

针对 SAP 的红帽 Ansible 自动化