顶级 5 款配置管理工具

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

Opensource.com

随着组织发现 DevOps 如何帮助他们生产更好的应用程序并缩短软件产品的上市时间,DevOps 正在不断发展并获得 traction。

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

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

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

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

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

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

配置管理工具使更改和部署更快、可重复、可扩展、可预测,并能够保持期望的状态,从而使受控资产进入期望的状态。

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

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

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

顶级 5 款配置管理工具

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

Ansible

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

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

因为不需要代理,所以服务器上的开销更少。在推送模式(默认模式)下运行时,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 来描述系统配置。它以模块化方式组织,manifest 文件包含期望状态目标,以保持一切符合要求。Puppet 默认使用推送模型,也可以配置拉取模型。

Salt

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

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

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

结论

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

接下来阅读什么
标签
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!

Muy bien! \o/

回复 Muy buen artículo Marco, por,作者:Noe Lugo (未验证)

我很高兴您参与讨论!

优秀的配置自动化入门指南。谢谢。

谢谢 Edgar!

回复 Excellent guide to start in,作者:Edgar M. F. (未验证)

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.