![如何避免服务器文档与实际设置不同步?](https://linux22.com/image/597494/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%96%87%E6%A1%A3%E4%B8%8E%E5%AE%9E%E9%99%85%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E6%AD%A5%EF%BC%9F.png)
我们有相当好的环境文档(AsciiDoc 格式),最近允许另一个人在不到 30 分钟的时间内从头开始重新创建整个设置。
但是,我注意到,在初始设置之后,很容易发生对系统所做的小更改(例如:inetd 被禁用,我的 IMAP 服务器监听用于 ManageSieve 连接的附加端口,在 exim 配置中添加了新的路由器)不会立即出现在文档中(如果有的话)。
我的想法是通过(部分地?)从配置文件和其中的注释中生成文档来避免这个问题 - 实现此目的的一种方法可能是将/etc
和/usr/local/etc
放入某些源代码管理系统(例如 - git),然后运行一个脚本,该脚本会在每次提交时重新生成文档。但是,我不确定这是否会过度和/或太难做到(毕竟,我不希望我的文档中有源文件的完整副本,而只是不同的副本)。
其他人如何避免服务器文档过时 - 是否有一个好的方法可以让它们自动保持同步,或者您是否有在修改系统的同时更新文档的纪律?
答案1
您永远无法摆脱一些文档,但正如您所暗示的那样,有些系统可以集成到您的变更过程中以涵盖其中的大部分内容。
这样,我们通常会忽略(或不关心)的较低级别文档,通过将部署信息存储在配置项或代码中作为您更改的系统的一部分来强制执行。这还有一个额外的好处,即该过程在未来变得更加可重复。
外部文档确实仍需要更新,但它会变得非常高级,指向“部署 x”或“部署 y”,而不是长命令/文件列表。这还会使文档更改频率降低且更容易,这也意味着更有可能完成。
另外,在你开始自制之前,可能有人已经用 puppet已经写好了可以管理您想要的东西。
答案2
如果您只管理一两个小型系统,那么设置大型配置管理系统(如 puppet 或 chef)似乎有些过头了。(不过,如果您计划将来拥有更多系统,那就现在就行动吧!)
对于像这样的小型设置,我建议使用类似的etckeeper
程序,它将放入/etc
存储git
库并提供一些有用的功能,例如在安装、升级或删除包时自动提交。
答案3
您只需在每次对系统进行更改时更新文档即可。又Change Management
。
事实上,大多数公司都以一种荒谬的方式实施变更管理,使得情况比什么都没有更糟糕,但这不应该降低基本概念的实用性或阻止您正确地执行变更管理。
我曾经使用html
或某种 wiki 来跟踪我的所有配置。现在我在一家 Windows 商店工作,使用 (不寒而栗) SharePoint,所以现在我使用我创建的 Word 文档“模板”来跟踪我拥有的每个系统和我所做的每个配置更改,这并不像听起来那么糟糕,因为许多系统只是其他系统的千篇一律的副本,可以全部集中到同一个文档中。(而且我保留了我所有资料的本地副本在我的硬盘上,实际上是以合理的方式组织的,除了将它们扔到任何人的 SharePoint 站点的无组织堆上。)
最大的挑战是真正腾出时间进行记录,我通过将记录时间作为进行更改的时间的一部分来实现这一点。所以,其实并不难,特别是如果你有点笨拙,并且不介意告诉人们滚开并排队等待,因为你现在太忙了,无法解决他们的问题。