十大软件配置管理工具
DevOps 在短短几年内已从一个小众运动转变为任何 IT 高管的必需品。关于 DevOps 的讨论很多,但也有很多有用的信息。这些至关重要但又敏感的任务——配置环境、安装应用程序和管理基础设施——通常都是手动执行的。如果我们可以自动化所有这些,节省数小时的工作量并消除人为错误的可能性,那该怎么办呢?
为了帮助您选择最适合您的配置管理工具(并能够为不选择 X、Y 和 Z 等选项的决定进行辩护),我们简化了快速查看每个工具并将其与替代方案进行比较的方法。
配置管理的目的是什么?
配置管理软件允许使用久经考验的软件开发流程来实时管理和配置数据中心,使用未加密的规范文件。有些人将 CM 解决方案称为“DevOps 一体机”,但这并不准确。尽管 CM 技术仅仅是——用于自动化配置状态应用的工具——但 DevOps 是关于人类合作的。它们旨在以特定方式解决特定问题,就像任何其他工具一样。根据使用者的知识和技能,它们可以更有效或更无效地使用。
风险与回报
自动化基础设施配置状态更改的优势在于您可以快速进行更改,但其他人或其他事物必须验证这些更改。在决定配置管理解决方案之前,请评估您将采用哪些补充工具来最大限度地减少在基础设施即代码中自动化部署缺陷的代价高昂的影响。此外,版本控制和文本友好性是软件配置管理 (SCM) 技术的特性。我们可以修改代码并将其提交为合并请求以供审查。
许多特定于操作系统的配置实现都由配置管理工具为您抽象化。例如,在 Red Hat 和 Ubuntu 系统上,可以使用相同的配置文件管理 Apache HTTPD 的安装。
配置不当是一个巨大的网络安全风险,可能导致数据泄露和其他网络攻击。在自动化基础设施配置时,必须考虑网络安全、信息安全和信息风险管理。
十大软件配置管理工具
以下是十大软件配置管理工具:
1. CFEngine
CFEngine 是一款较旧的开源配置管理应用程序,它能够为大型计算机系统实现自动化配置,包括服务器、系统、用户、嵌入式网络设备、移动设备和其他设备的统一管理。
2. Puppet
Puppet 每年的“DevOps 状态”报告是 DevOps 趋势的重要来源之一。对于从事运营工作的人员来说,了解 Puppet 平台的优缺点正变得越来越重要。Puppet 使用声明式编程语言或 Ruby 来指定系统配置。它被划分为模块,清单文件提供所需状态目标以维护所有内容的必要状态。
Puppet 的开源版本是免费的,而 Puppet Enterprise 对于最多 10 个节点是免费的。安装 Puppet 后,基础设施中的每个节点(物理服务器、设备或虚拟机)都将安装 Puppet 代理。
3. Chef
Chef 与 Puppet 一样,是 CM 和自动化平台行业的主要巨头。它负责位于本地、云端或混合环境中的服务器。如果您是云无关的,则在切换云提供商时,您可以同时管理数据中心和云环境。
4. Ansible
Ansible 比 Chef 或 Puppet 更新,是最佳的开源配置管理、部署、编排和自动化引擎。Fedora 和其他著名的 Linux 发行版都包含它。它有助于自动化 IT 基础设施,从而为软件配置、配置管理和应用程序部署带来显著的生产力改进。
Ansible 是我们最喜欢的工具之一。您可以使用 Ansible 从命令行在多台服务器上运行相同的命令。它还可以用于使用 YAML 编写的剧本自动化操作(例如添加用户、安装包和更改服务器配置),从而使技术团队和非技术团队能够更有效地沟通。程序员和非程序员都会发现 Ansible 简单、无代理且易于阅读。
没有代理意味着减少了服务器上的负载。推送模式(默认模式)需要 SSH 连接,但是,在必要时可以使用拉取模式。可以使用少量命令编写剧本,也可以使用更复杂的自动化任务(包括角色、变量和模块)对其进行扩展。
5. SaltStack
SaltStack 是“基础设施即代码”理念的主要倡导者,尽管它进入市场的时间相对较晚,但由于它与 Google Cloud、Amazon Web Services (AWS) 等云提供商的众多集成,它已经积累了大量的追随者。
“与 Ansible 类似,Salt 是用 Python 编写的。它也是针对对 Puppet/Chef 的垄断的抱怨而创建的,特别是它们繁琐的部署过程和对 Ruby 的需求。虽然 Salt 支持 Python,但它也要求所有 CLI 命令都用 Python 或称为 PyDSL 的唯一 DSL 编写。这使得 Salt 在 Puppet 和 Ansible 之间处于中间位置。它使用主服务器和称为子节点的分布式代理来指挥和与目标服务器交互,但是这是在传输层使用 ZeroMq 消息库完成的,这使得它比 Puppet/Chef 快得多。”
6. TeamCity 配置工具
Jet Brains 的 TeamCity 是另一个基于 Java 编程语言构建的管理和持续集成服务器。
7. Docker
Docker 是一款相对较新的工具,自 2013 年推出以来,它席卷了 DevOps 和软件开发领域。Docker 轻量级的容器化技术是其成功的秘诀:
“他们的方法通过在一个容器中部署软件应用程序及其所有必需组件,确保软件程序可以在任何 Linux 服务器上运行,而与设置和/或设置无关。可以创建、定制和保存容器作为模板,用于在运行 Docker 引擎的其他主机上使用。然后可以使用相同的操作系统、设置和二进制文件使用这些模板生成更多容器。”
8. 使用 PowerShell DSC
微软的 CM 解决方案 PowerShell DSC 不输于开源解决方案。
“DSC 是一个新的 Windows PowerShell 管理平台,它使得能够部署和管理软件服务的配置信息以及它们运行的环境。
DSC 包含一组 Windows PowerShell 语言扩展、新的 Windows PowerShell cmdlet 和资源,您可以使用它们以声明方式指示软件环境应如何配置。此外,它提供了一种监视和维护当前设置的方法。”
9. Rudder
Rudder 是一款开源 IT 基础设施管理应用程序,运行在 CFEngine 之上。Rudder 的特殊资产管理功能可以识别节点及其属性,这在执行配置管理操作时可能很有用。此 CMT 使用资产管理来识别配置管理节点。
Rudder 依赖于一个小型本地代理,该代理下载并安装在每台受监控的机器上。Scala 用于创建 Rudder 的服务器端 Web 接口,而 C 用于创建本地代理。
10. JUJU 配置工具
JUJU 是一款开源程序,主要关注减少较新技术的运营开销。JUJU 提供诸如扩展、集成、定制等功能。JUJU 没有提供有关如何使用 OpenStack 云服务的具体说明。
结论
总之,DevOps 已成为 IT 高管的必需品,因为它能够自动化敏感和关键任务,节省时间并消除人为错误的可能性。配置管理是 DevOps 的重要组成部分,因为它允许快速应用配置状态更改,从而更轻松地实施更改。虽然有许多可用的配置管理工具,例如 CFEngine、Puppet、Chef、Ansible、SaltStack 和 Docker,但必须评估每个工具的补充工具,以最大限度地减少在基础设施即代码中自动化部署缺陷的代价高昂的影响。此外,在自动化基础设施配置时,务必解决网络安全、信息安全和信息风险管理问题。DevOps 是关于人类协作的,配置管理技术可以根据使用者的知识和技能而更有效或更无效地使用。