配置管理工具Top 5

了解配置管理工具,并找出哪种工具最适合您的 DevOps 组织。
480 位读者喜欢这个。
gears and lightbulb to represent innovation

Opensource.com

DevOps 正在不断发展并越来越受欢迎,因为组织机构发现它能帮助他们开发更好的应用程序,并缩短软件产品的上市时间。

DevOps 的核心价值观是文化 (Culture)、自动化 (Automation)、度量 (Measurement) 和共享 (Sharing) (CAMS),组织机构对这些价值观的坚持程度会影响其成功程度。

  • 文化将人员和流程结合在一起;
  • 自动化为 DevOps 创建了一个框架;
  • 度量允许改进;并且
  • 共享实现了 CAMS 循环中的反馈回路。

另一个 DevOps 概念是,几乎所有东西都可以用代码来管理:服务器、数据库、网络、日志文件、应用程序配置、文档、自动化测试、部署流程等等。

在本文中,我将重点介绍自动化的一个方面:配置管理。作为 基础设施即代码 (IaC) 的一部分,配置管理工具允许使用经过测试和验证的软件开发实践,通过纯文本定义文件来管理和配置数据中心。

通过操作简单的配置文件,DevOps 团队可以使用应用程序开发的最佳实践,例如版本控制、测试、小规模部署和设计模式。 简而言之,这意味着可以编写代码来配置和管理基础设施,以及自动化流程。

为什么要使用配置管理工具?

配置管理工具能够使变更和部署更快、可重复、可扩展、可预测,并能够维护所需的状态,从而将受控资产置于预期的状态。

使用配置管理工具的一些优点包括

  • 遵循编码约定,使代码更易于浏览
  • 幂等性,这意味着无论代码执行多少次,最终状态都保持不变
  • 分布式设计,以改进对大量远程服务器的管理

一些配置管理工具使用拉取模型,其中安装在服务器上的代理定期运行,从中央存储库拉取最新的定义并将其应用到服务器。 其他工具使用推送模型,其中中央服务器触发对受管服务器的更新。

配置管理工具Top 5

有各种各样的配置管理工具可用,每种工具都有特定的功能,使其在某些情况下比其他情况更好。 然而,以下按字母顺序排列的五大配置管理工具,有一些我认为对 DevOps 的成功至关重要的共同点:它们都具有开源许可证、使用外部化的配置定义文件、无人值守运行且可编写脚本。 所有描述均基于来自这些工具的软件存储库和网站的信息。

Ansible

“Ansible 是一个极其简单的 IT 自动化平台,可让您更轻松地部署应用程序和系统。 避免编写脚本或自定义代码来部署和更新您的应用程序——使用接近纯英语的语言通过 SSH 进行自动化,无需在远程系统上安装任何代理。” —GitHub 存储库

Ansible 是我最喜欢的工具之一; 我几年前开始使用它,并爱上了它。 您可以使用 Ansible 从命令行为服务器列表执行相同的命令。 您还可以使用它来自动化任务,方法是将“playbooks”写入 YAML 文件中,这有助于团队和非技术人员之间的沟通。 它的主要优点是简单、无代理且易于阅读(特别是对于非程序员而言)。

因为不需要代理,所以服务器上的开销更少。 以推送模式(默认模式)运行时需要 SSH 连接,但如果需要,可以使用拉取模式。 Playbooks 可以使用最少的一组命令编写,或者可以扩展以用于更复杂的自动化任务,这些任务可以包括角色、变量和由其他人编写的模块。

您可以将 Ansible 与其他工具结合使用来创建中央控制台以控制流程。 这些工具包括 Ansible Works (AWX)、Jenkins、RunDeck 和 ARA,后者在 运行 playbooks 时提供可追溯性

CFEngine

“CFEngine 3 是一个流行的开源配置管理系统。 它的主要功能是提供大规模计算机系统的自动化配置和维护。” —GitHub 存储库

CFEngine 由 Mark Burgess 于 1993 年推出,作为一种自动化配置管理的科学方法。 其目标是处理计算机系统配置中的熵,并使用终端状态“收敛”来解决它。 收敛意味着期望的终端状态,并详细说明幂等性作为达到期望终端状态的能力。 Burgess 的研究在 2004 年有了发展,当时他提出了 承诺理论,作为代理之间自愿合作的模型。

当前版本的 CFEngine 包含承诺理论,并使用在每台服务器上运行的代理,从中央存储库拉取配置。 它需要一些专业知识来处理配置,因此最适合技术人员。

Chef

“一个系统集成框架,旨在将配置管理的好处带到您的整个基础设施。” —GitHub 存储库

Chef 使用用 Ruby 编写的“recipes”来使您的基础设施保持最新和合规。 这些 recipes 描述了一系列应该处于特定状态的资源。 Chef 可以在客户端/服务器模式或名为 chef-solo 的独立配置中运行。它与主要的云提供商具有良好的集成,可以自动配置新的机器。

Chef 拥有可靠的用户群,并提供一整套工具,使具有不同技术背景和技能的人员能够围绕 recipes 进行交互。 但是,在其基础上,它是一个更面向技术的工具。

Puppet

“Puppet 是一种用于您的 Linux、Unix 和 Windows 系统的自动化管理引擎,它基于集中规范执行管理任务(例如添加用户、安装软件包和更新服务器配置)。” —GitHub 存储库

Puppet 最初是一个面向运营和系统管理员的工具,现已巩固为配置管理工具。 它通常在客户端-服务器架构中工作,代理与服务器通信以获取配置说明。

Puppet 使用声明性语言或 Ruby 来描述系统配置。 它以模块形式组织,清单文件包含所需状态的目标,以保持一切按要求进行。 Puppet 默认使用推送模型,并且可以配置拉取模型。

Salt

“用于自动化大规模管理和配置任何基础设施或应用程序的软件。” — GitHub 存储库

Salt 是为高速数据收集和扩展到数万台服务器而创建的。 它使用 Python 模块来处理配置细节和特定操作。 这些模块管理 Salt 的所有远程执行和状态管理行为。 配置模块需要一定程度的技术技能。

Salt 使用客户端-服务器拓扑(Salt master 作为服务器,Salt minions 作为客户端)。 配置保存在 Salt 状态文件中,这些文件描述了使系统保持所需状态所需的一切。

结论

DevOps 工具的格局一直在变化,关注这些变化非常重要。 我希望本文能鼓励您进一步探索这些概念和工具。 如果是这样,云原生计算基金会 (CNCF) 在 云原生景观项目中维护了一个良好的参考。

接下来阅读什么
标签
Marco Bravo's photo
我在加拿大 OVHcloud 担任 DevOps 系统管理员,我的兴趣与信息技术 (IT) 相关,特别是信息安全、开发、运营和云计算。 您可以在 Twitter 上通过 @marcobravoram 与我联系。 让我们开始对话。 如果你不知道,问——如果你知道,分享! ~ 开源心态

5 条评论

Muy buen artículo Marco, por aca se usa puppet como parte de la infra Linux. Voy a explorar un poco más en las otras que comentas. Saludos!

I'm really happy for this participation!

Excellent guide to start in the world of configuration automation. Thanks.

Creative Commons License本作品已根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© 2025 open-source.net.cn. All rights reserved.