我最近的一些文章是关于 Linux 哲学及其对像我这样的系统管理员日常活动的影响。Linux 哲学的 基本原则之一是使用软件杠杆,而该原则的一个重要推论是自动化一切。
大量安装
我一直有多台计算机(最多一次有 14 或 15 台),随着 VMware 和 VirtualBox 的出现,还有相同数量的虚拟机用于测试。我还为客户系统安装 Linux。因此,我经常安装 Linux,有时一天安装多次。这就需要进行快速、可重复的安装。
例如,我有一套最喜欢的配置,用于诸如 Midnight Commander 之类的工具。我还有许多我喜欢安装的字体,这些字体不是大多数默认安装的一部分。我可以每次安装都使用 YUM 手动安装每种字体,并手动更改 Midnight Commander 的配置,但这会花费大量时间,并且变得乏味且无聊。
当我手动完成所有这些操作时,我经常忘记事情。我开始记录待办事项清单,但这仍然很耗时。因此,多年来,我开发了一个流程,以确保快速、可靠地完成安装,并且不会忘记安装或配置任何内容。
我首先进行一个非常基本的安装。我按照我想要的方式配置磁盘分区和逻辑卷,并且(可能)安装 KDE 桌面。我不浏览可用软件包或组的整个列表,并试图记住我要安装哪些软件包才能在我的计算机上获得我想要的工具。
编写重复性任务的脚本
多年来,我开发了一个最初相当简单的 Bash 脚本,我运行该脚本来完成配置和安装我想要的其他 RPM 软件包。
随着时间的推移,这个简单的脚本不断发展,使我能够根据它们是桌面、服务器还是教室系统来定制标准安装。我添加了选项,使我能够选择一个或多个可用的桌面环境进行安装。我创建了需要安装的各种配置文件,并确定最好的方法是创建一个 RPM 软件包,其中包含这些文件,其中一些文件是我多年来创建的更多脚本,用于执行各种其他重复性任务以及我的安装后脚本。
我还扩展了我的脚本,以便像 Fedora 一样为 CentOS 启用相同的功能。RPM 软件包本身就是一种自动化形式,因为它使我无需记住要安装哪些文件以及安装位置。RPM 软件包现在安装大约二十几个文件,而我一直在改进的安装后脚本已有大约 10 年的历史,代码行数超过 1,300 行,注释行数超过 800 行。
即使使用 RPM 和安装后脚本,完成将我安装的许多计算机中的每一台都达到我的标准所需的所有工作也可能需要一个多小时。我当然不怀念手动键入所有这些指令并等待每个指令完成再键入下一个指令的日子。
从期望变为必需
一切都进展顺利。虽然我可以手动完成所有这些工作,但使用我的自动化工具要容易得多。Fedora 21 在几个月前问世,而我多年来创建的自动化现在已成为必需。
对于那些不熟悉 Fedora 21 的人来说,此版本的安装发生了巨大变化。现在有三个独立的安装 ISO 映像:桌面版、服务器版和云版。我使用过桌面版和服务器版 ISO 进行安装,但我非常不喜欢它们。我认为新的安装对于绝大多数 Fedora 用户来说都非常有限制。
没有简单的安装映像。桌面版 ISO 是一个 live 映像。除了 live 映像 ISO 中的软件包外,在安装过程中没有安装任何软件包的选项。一个都没有。如果我想安装 KDE 或任何其他桌面环境而不是 GNOME(我确实想这样做),我必须下载 KDE spin 或在初始安装后安装它。我无法从主要的安装介质 Live 映像中进行安装。
我甚至无法选择安装 LibreOffice。在安装过程中无法做到这一点。我必须在初始安装后安装它和许多其他东西。我认为这对许多潜在的 Linux 用户,尤其是新手来说,是一个巨大的绊脚石。
幸运的是,我的安装后 RPM 和脚本使我能够轻松地做到这一点。是的,我不得不对我的脚本进行一些调整——就像我对每个新版本所做的那样——以适应版本之间的一些变化。
我坚持遵循 Linux 哲学 的习惯对我来说非常有利。因为我花时间自动化一切,所以我个人几乎没有因 Fedora Linux 处理安装方式的重大变化而受到干扰。
这就是我通过自动化安装所获得的好处
- 我节省了每次安装的时间。
- 安装具有一致性。
- 当引入发行版安装的重大更改时,几乎不会或完全不会中断。
当然,还有其他方法可以自动化 Linux 安装和配置,并且有许多工具可以应用于该任务,例如 Kickstart、Puppet、Satellite Server 等。我 广泛 使用过 Kickstart,但我的脚本在我当前的环境中运行良好,并且满足我的需求——这就是 Linux 的游戏规则。
警告: 本文描述的 Bash 程序始终在不断完善中,可能包含错误。 此脚本对您的系统所做的一些更改,例如禁用 SELinux,可能会使您的系统更容易受到入侵。 它可能无法按预期或描述的方式工作,您应该仅在本文的上下文中将其用作学习工具,而不是在生产环境中使用,直到您对其进行了彻底的测试并根据自己的需求和环境进行了必要的修改为止。
8 条评论