我们有相当好的环境文档(AsciiDoc 格式),最近允许另一个人在不到 30 分钟的时间内从头开始重新创建整个设置。
然而,我注意到在初始设置之后,很容易发生对系统进行小的更改(比如:inetd 被禁用,我的 IMAP 服务器在一个额外的端口上监听 ManageSieve 连接,一个新的路由器被添加到 exim 配置)不要' 立即出现在文档中(如果有的话)。
我的想法是通过(部分地?)从配置文件和其中的注释生成文档来避免这个问题——实现这个的一种方法可能是/etc
放入/usr/local/etc
一些源代码管理系统(比如 - git),然后运行一个在每次提交时重新生成文档的脚本。但是,我不确定这是否会矫枉过正和/或太难正确(毕竟,我不希望我的文档中有源文件的完整副本,而只是差异)。
其他人如何避免服务器文档过时 - 是否有一种好方法可以自动保持它们同步,或者您是否只是在修改系统的同时更新文档?
如果你只管理一两个小系统,那么设置一个像 puppet 或 chef 这样的大型配置管理系统似乎有点矫枉过正。(不过,如果您计划在未来拥有更多系统,请立即行动!)
对于像这样的小型设置,我建议使用类似
etckeeper
的程序,它会放入/etc
存储git
库并提供一些有用的功能,例如在安装、升级或删除软件包时自动提交。每次在系统上进行更改时,您只需更新文档即可。又名
Change Management
。事实上,大多数公司都以如此荒谬的方式实施变革管理,以至于比什么都不做还糟糕,这不应减损基本概念的实用性或阻止您正确地做事。
我曾经使用
html
或某种 wiki 来跟踪我的所有配置。现在我在一家 Windows 商店工作(不寒而栗)SharePoint,所以现在我使用我创建的 Word 文档“模板”来跟踪我拥有的每个系统和我所做的每个配置更改,这并不像听起来那么糟糕,因为有很多系统只是其他系统的千篇一律的副本,可以将它们全部集中到同一个文档中。(而且我将我所有资料的本地副本保存在我的硬盘驱动器中,实际上以合理的方式组织,除了将它们扔到任何人的 SharePoint 站点的无组织堆上。)最大的挑战实际上是花时间记录,我通过将记录时间添加为进行更改的时间的一部分来做到这一点。所以,其实并没有那么难,尤其是如果你是个混蛋,并且不介意告诉人们滚开并排队等候,因为你现在太忙了,无暇顾及他们的问题。
您永远不会离开某些文档,但正如您所暗示的那样,有些系统可以集成到您的变更过程中以涵盖其中的大部分内容。
这样,通过将部署信息存储在配置项或代码中作为您进行更改的系统的一部分,我们通常会错过(或不打扰)的较低级别的文档得到强制执行。这还有一个额外的好处,即该过程在未来变得更加可重复。
外部文档仍然需要更新,但它变得非常高级,带有指向“部署 x”或“部署 y”的指针,而不是长命令/文件列表。这还使文档更改既不那么频繁又更容易,这也意味着它更有可能完成。
同样在你回家之前,用 puppet 可能已经有人写了一些东西来管理你想要的东西。