# 2024 年 5-6 月来信

* 作者：**Michael W Lucas**
* 原文链接：<https://freebsdfoundation.org/our-work/journal/browser-based-edition/configuration-management-2/we-get-letters-may-june>

> 亲爱的来信专栏，
>
> 我的雇主有数十台服务器，但我不知道有多少操作系统。其中一台的运行时间比我都大，没人敢碰。但有个大聪明把一本电脑杂志落在了洗手间，被老板发现了。现在老板的脑瓜里，已经把“配置管理（configuration management，又称组态管理）”当成了化解我们全部问题的万金油，但数据中心真正需要的是背包核弹（核背包）。我该怎样才能让他明白，这些工具并不适合我们这样的环境？
>
> “我已经注定要失败了，问你也无济于事。”

亲爱的失败者，

“问我也无济于事。”似乎系统管理员可以承受的痛苦有限，或者说他们失败的程度有限。失败并非是可以溢出的整数值。失败是一种社会构建，而你的失败已经完全确定。

我们都看过配置管理的推广。只需一个命令就能部署专用的高度优化过的服务器！用简单的 Playbook（**译者注：Playbook 是 Ansible 的配置文件**）就能调整计算云端！从一个服务器无缝透明迁移到另一个服务器！容器！对于那些什么都不懂的人来说，非常棒。但大多数系统管理员的工作环境用“巴洛克”（**译者注：指复杂繁琐**）来形容再合适不过了，甚至可以说是“史前文明”。我发现只有自己亲自在耕耘过的土地上，等待三叶草长出后，自己才能有一片绿地——绝非草坪，草坪是对气候施暴（**译者注：人工草坪和羊都会威胁生态环境**）。除非你养羊、或山羊——但如果你养任意品种的山羊，你的草坪都不会长久。这表明善行也是荒漠化的中介。此外，有谁愿意在安装数据中心之前等待三叶草呢？把那堆被夷为平地的幼儿园的废墟推平，继续过你的日子吧。

配置管理是一个仅存在于广告中的理想，且往往会制造麻烦而不是解决麻烦。没错，加拿大冰球联盟可以通过 DevOps 管理整个 Web 服务器集群，以动态应对全国人民同时观看纪念杯决赛时增加的负载，据说他们还可以通过 DevOps 增建更多心理健康设施，以应对伦敦骑士队输给萨吉诺精神队（他们甚至不是加拿大人）时的巨大失落感。而你？可能就不那么幸运。动态采购是动态调配的先决条件，而你显然缺乏都不具备。

你可以部署配置管理，但不要以恶意合规的方式来做。跳过那些过于理想化的手段来管理整个服务器集群。你没法只用一把椅子、一根鞭子和一把火焰喷射器来管理服务器集群。但系统中那些痛苦的部分是可以控制的。

配置管理是系统管理工具。因此，使用它来满足你的需求。从少量系统开始。配置一个带访问权限的管理账户，让你的管理系统可以 `ping` 这些主机。恭喜你——你已经实现了恶意合规！这满足了你被管理的需求，但不符合你的管理需求。

每台服务器都是一片独特的雪花，尽管是一种会感染的雪花。当你开始控制这些系统时，从相对简单的东西开始，已是已知的最佳值，在 Unix 变体中亦基本一致。关于这个问题有句陈词滥调：“一切问题都是 DNS 问题。”问题总是 DNS 问题，因为系统管理员不懂 DNS，并且在 DNS 服务器变化时未同步更新 `/etc/resolv.conf`。我总是从这开始的。你不仅要在初步配置管理下使系统生效，还要对当前的 DNS 配置进行审计，作为该项目的先决条件。你的经理会喜欢它。将你的主机按操作系统分组，并将它们的解析器纳入你的管理范围。如果你充满善意，请为这个文件写一下注释。

```
# under configuration management 由配置管理控制
# your changes will be overwritten without a human ever seeing them 你的任何更改都将被覆盖，且均无效
search mwl.io tiltedwindmillpress.com
nameserver 203.0.113.53
nameserver 2001:db8::53
```

恭喜！你已经控制了 DNS 解析。它会经常变化吗？希望不会。但是你现在可以轻松地进行更改了。如果你希望别人认真对待你，你必须始终进行威慑，因此请安排：每月运行配置管理来更新 `resolv.conf`。

你可以合法地声称你的主机已经在配置管理下运行，但你还没有利用它让生活变得更轻松。看看另一个常见的服务，每个主机都有但通常配置不一致的：SSH。你的组织可能有像“禁止基于密码的认证”这样的规则。如果没有，等到发生安全事件再议。绝不能浪费一场好危机！锁定 SSH 并确保它保持锁定状态的最简单方法是将 `sshd_config` 纳入集中管理。是的，每个操作系统都有自己定制的 `sshd_config`，因为在集成软件之前，Unix 的维护者们总要将其改造成自己喜欢的样子，但管理系统使用模板来对抗这种不卫生的行为。你可能已在上班路上睡着的时候，背诵过默认的 `sshd_config`，所以请确保你的管理配置与默认配置看起来截然不同。

```
#Configuration Under Management 由配置管理控制
#Manual Changes Will be Overwritten 任何任何更改都将被覆盖
Port 9991
PasswordAuthentication no
Subsystem       sftp    /usr/libexec/sftp-server
```

任何想着“我把默认选项注释掉就好了”的系统管理员在看到此处时，大脑就会瞬间惊醒。

慢慢的，你就可以将大部分环境都纳入你的掌控之下。对已管理服务的更改将变得微不足道。你的同事们会看到这一点。关于更改未管理服务的讨论将变成“我们如何将这个服务纳入管理？”利用这些讨论来实施环境中的必要更改，或者为自己争取第四台更好的显示器。毁灭是一种社会构建，但通过配置管理，你可以将其转变为一层保护壳，或者是一面攻城锤。至少，你可以分享那份痛苦。

很少会提及部署配置管理，但有一个可怕的副作用：谁掌控了环境，谁就掌控了权力。任何变更都必须经过你。人们无法在那台面向公众的服务器上永久启用密码验证，但这并不意味着他们不会向你抱怨。他们会期望你参与问题解决，没人能够在变成一位问题解决高手的情况下活下来。那无法消除的声誉污点只会让你赢得公司替罪羊的称号。

幸运的是，你知道山羊意味着什么。开始放牧吧。

有关于 Michael 的问题？请发送至 <letters@freebsdjournal.org>。

***

**Michael W Lucas** 是 *Networking for System Administrators* 等多本著作的作者，他还犯下了许多其他危害人类文明的罪行。其中的专栏文章集《Dear Abyss》（亲爱的深渊）即将在 Kickstarter（**译者注：美国的一间众筹平台**，该文章集在 <https://www.kickstarter.com/projects/mwlucas/dear-abyss-the-freebsd-journal-letters-column-years-1-6>）上连载，他预谋的证据确凿。详情请访问 <https://mwl.io/ks>。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/20240506-pei-zhi-guan-li-dui-jue/2024-nian-5-yue-6-yue-lai-xin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
