什么是配置管理工具?

3 位读者喜欢这篇文章。
Two different paths to different outcomes

Opensource.com

对于大多数人来说,计算机并非一成不变。软件会被添加、删除和更新。配置也会被更改。想想自从你第一次启动电脑以来,你对电脑所做的更改。现在想象一下对 10 台、100 台或 1,000 台甚至更多电脑进行这些更改。配置管理工具使得实施和强制执行这些更改成为可能。

原始配置管理

使用“黄金镜像”(操作系统和一些应用程序的预配置副本)作为初始安装过程的一部分复制到机器上,是配置管理的先驱。使用这种方法,你知道你管理的每台计算机都从一个共同的起点开始,即使它们随着时间的推移而出现差异。但是,这种差异的可能性意味着,从现在起六个月后,你无法真正预测每台机器将处于什么状态。而且黄金镜像不是很灵活。

配置管理系统演进的下一步是我称之为“安装管理”工具的东西。这些工具提供了更大的灵活性,并且基本上允许自动化“正常”安装。Kickstart 由 Fedora 和 Red Hat 使用,Preseed 由 Debian 及其衍生版本使用,以及 Solaris 的 jumpstart 都是安装管理工具。它们允许使用所需的配置和软件包安装机器。基本的逻辑运算符允许进行更细粒度的控制,自定义的安装后脚本进一步扩展了这一点。但是,后续的更改仍然是手动过程。

配置管理功能

进入配置管理工具的世界。每种工具都是独一无二的,但它们都为重要的功能提供某种程度的支持。

强制执行。 配置强制执行可能是配置管理工具最重要的功能。通过定期运行并确保机器配置到所需状态,配置管理工具可以防止配置漂移。配置漂移可能以多种方式发生:软件包更新、实时调试、“乐于助人”的同事等等。无论原因是什么,能够自信地说“这台机器就是这样配置的”,是缩短事件解决时间和减少意外的好方法。

促进协作。 配置管理工具使团队成员更容易协作。只需进行一次更改,即可在整个基础设施中更新配置。在机器上手动编辑配置只会导致意想不到的差异。通过将所有配置放在一个地方,你可以避免踩到别人的(包括未来的你)脚趾。

版本控制友好。 当然,实现协作的最佳方法是将所有内容都放在版本控制系统中。下面列出的所有工具都使用某种形式的文本进行配置。这意味着你可以利用你最喜欢的版本控制系统的好处。版本控制的好处超出了本文的范围,但请相信我的经验,你真的非常需要将你的配置放在版本控制系统中。

启用变更控制流程。 由于配置管理工具是文本的并且对 VCS 友好,你可以像对待代码一样对待基础设施变更。更改可以作为差异或合并请求提交,并在批准前接受代码审查。明确列举带有时间戳的更改可以使重建事件变得更加容易。通过原子更改,你可以以你感到舒适的速率发布它们,而不是一次性将一堆更改扔到你的基础设施中。

抽象化。 很少有系统管理员维护完全同构的环境。即使你是一家纯 Linux 商店,你可能也支持多个发行版,或者至少是同一个发行版的多个版本。使用配置管理工具,许多特定于操作系统的配置实现都为你抽象掉了。例如,同一个配置文件可以用于管理在 Red Hat 和 Ubuntu 系统上安装 Apache HTTPD。

一些配置管理工具

如今存在着出色的配置管理工具,它们正等待着你去尝试。下表列出了一些最流行的工具,但还有更多工具。如今,大多数配置管理工具除了 Linux 外,还支持 Windows 和 Unix。

工具 语言 FLOSS 版本
CFEngine C CFEngine Community
Puppet Ruby Open Source Puppet  
Chef Ruby Chef
Ansible Python Ansible
SaltStack Python SaltOpen

为什么你应该使用配置管理

如果前面的 800 个字还没有说服你,请试试这个轶事。多年前,我曾在由大约十几位系统管理员组成的团队工作,维护一所大型研究型大学的高性能计算基础设施。我们能够比人员规模增长更快地增加机器数量,因为每台机器的边际成本非常小。从配置的角度来看,我们可以有效地将每个集群视为一台机器。在一次重组将我们团队的几名成员调到一个没有采用配置管理的团队后,我们对我们所拥有的东西有了更好的认识。

有一天午餐时,我们一位不幸的同事告诉我们,在他的小组维护的 130 台左右的机器中,同一个配置文件有近 100 种变体。其中大多数在功能上是相同的,这使得情况更糟。记住哪些更改是重要的,哪些机器进行了这些更改,增加了多少认知负担?当需要更改该文件时,又需要付出多少努力?无论你维护 5,000 台机器还是 5 台,配置管理工具都能让工作更轻松。

标签
User profile image.
Ben Cotton 受过气象学家的培训,但天气是一个很棒的爱好。Ben 在 Red Hat 担任 Fedora 项目经理。他是《开源项目项目管理》的作者。在 Twitter (@FunnelFiasco) 或 FunnelFiasco.com 上找到他。

5 条评论

读完这篇文章后,我仍然不太清楚你在谈论哪种配置。也许一些具体的、易于理解的例子会有所帮助。
在某种程度上,这似乎有点“老大哥”的味道,让一些系统管理员进来并在我不知情或未经批准的情况下更改大量设置。在某种程度上(并且只在某种程度上),多样性是生活的调味品,所以也许应该容忍甚至鼓励一些变化。

Greg,感谢你的评论。上下文基本上是“系统上运行的任何东西”。这可以是 Web 服务器配置、DNS 设置、已安装的软件等。

至于“老大哥”的部分,这是一个政治问题,而不是技术问题。如果有系统管理员管理你的桌面,那么更改的批准不是你给的。如果你管理自己的桌面,那么在这种情况下你就是系统管理员。

回复 ,作者 Greg P

Greg,

如果你正在运营一个可能有数千台服务器的大型环境,那么配置需要严格控制,尤其是在你有影响企业收入的关键系统的情况下。即使没有什么 критично 的,并且你需要分担责任,那么在大型环境中,你也需要强制执行控制,否则你将浪费时间和金钱来修复东西。

回复 ,作者 Greg P

哈!那个广告是经典之作。谢谢你提醒我。

回复 ,作者 TweetingToDist… (未验证)

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