如何记录并自动化系统配置?

如何记录并自动化系统配置?

用当前状态来表示系统配置是有风险、低效且不透明的。有时,您可能会得到一个不受支持的系统,并且没有升级路径。然后,配置与旧系统兼容的新系统是一个反复试验的过程。此外,如果系统在某个时候损坏,唯一的选择是返回最近的完整备份,并尝试记住从那时起发生了哪些更改。此外,创建与原始系统兼容的系统的唯一方法是通过完整的转储/恢复。最后,在这样的设置中,无法知道您是如何解决特定问题的;您唯一能做的就是查看相应的配置文件,并尝试猜测您更改了什么以达到预期的效果。

目前,对于我维护的每个系统,我都会保留一个日志文件,记录所有系统管理活动,从安装开始:安装选项、添加的软件包、配置文件中的更改、更新、问题修复等。理论上,这允许我(手动)重播所有更改以达到当前状态,或者通过执行反向命令来展开错误的更改。然而,这个过程也是低效的、容易出错的,并且依赖于人的判断。

我尝试过的另一件事是使用 git 将 /etc 配置文件置于版本控制之下。这可以帮助我自动记录更改并将其应用于干净的设置。但这并非没有问题:git 必须在 sudo 下运行,密码和私钥可能存储在存储库中,无法有意义地跟踪已安装的软件包,如果我尝试将这种方法扩展到系统的所有目录,git 就会发脾气。

我也考虑过通过 shell 脚本或 makefile 来执行所有更改,但我认为这个过程需要付出很多努力并且很脆弱。

我是否遗漏了一些更好的方法或工具?

答案1

帮自己(和您所爱的人)一个忙,尽快摆脱手动系统配置!

您应该开始使用系统配置管理软件。此类软件的最初用例是管理大量主机(对于某些“大量”的定义)。然而,其基本前提是管理甚至单个主机。虽然所需的努力可能不是立即合理的,但对于任何长期计划的人来说,这实际上是有意义的。

该领域的知名人物有(按时间顺序排列):

我提到编程语言不仅仅是为了在远程情况下深入研究实现代码。虽然这不是绝对的要求,但熟悉底层语言可能有助于使用每个工具,因为它们的配置受语言影响。

我个人的选择是 CFengine,因为......年龄、语言和美感基本理论。但其中任何一个(以及其他的)肯定都能帮助你。

初始设置可能有点令人生畏……尤其是对于我们这些多年来一直使用手动方式的人来说。但最终它绝对值得!

答案2

在工具方面,你可以看看这一页它是关于使用开源配置管理工具实现系统管理自动化(在波士顿举行的 USENIX 2010 会议主办了第一届配置管理峰会):

维基百科相关页面也很有用。

希望这些有帮助

答案3

上面提到的很棒的资源!

Netdisco - 用于基于 SNMP、CDP、LLDP 的网络管理和发现,Postgres 后端 http://www.netdisco.org/

Nedi,再次利用 SNMP、CDP…… http://www.nedi.ch/about/

相关内容