在任何新的 Linux 安装上我总是会安装许多程序(例如 hd-idle、zsh、ruby);并且我总是执行许多配置任务(例如自定义 zshrc)。
我不想每次安装 Linux 机器时都手动执行此操作,所以我正在寻找某种自动化工具。我研究过 Salt、Ansible、FAI 等,但它们真的很复杂 - 而且它们更适合大规模管理数百台机器。
我需要一种方法来定义一组模板,将它们放在闪存驱动器上,并在目标机器上执行它们。
我原本打算为此编写一个程序,但这个计划充满了问题。因此,我希望找到一个其他人已经创建的现有解决方案。
(唯一能保证在任何系统上运行的编程语言是 bash。但是 bash可怕工作。)
答案1
答案取决于所选的发行版。例如,Debian(以及 Ubuntu、Mint 等衍生产品)接受种子文件,但可以在安装过程中加载以实现完全自动化的过程。它通常与 pxe 服务器配合使用以进行网络安装。
以下是 Ubuntu 的参考:
问:如何创建完全无人值守的 Ubuntu 安装?
答:https://askubuntu.com/questions/122505/how-do-i-create-a-completely-unattended-install-of-ubuntu
答案2
如果您可以假设这些程序存在于您的发行版的默认上游存储库中,那么您可以编写某种小型 shell 脚本。(以下内容可以视为伪代码,因为我尚未测试过。)
#!/bin/bash
packages_to_install="curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel"
release=`cat /etc/*-release`
case $release in
redhat|centos) cmd="yum install"; ;;
ubuntu|debian) cmd="apt-get install"; ;;
esac
for pkg in $packages_to_install; do
sudo $cmd $pkg
done
我不太喜欢这个解决方案,但根据你对 ansible/salt 对你来说太复杂以及好的 Debian 解决方案与发行版无关的评论,我认为这就是你剩下的全部了。
答案3
我编写了一个脚本,专门完成这个任务。
https://github.com/jrkessl/workstation
它是一个 bash 脚本,用于安装 KDE 和我需要的软件并应用我想要的配置、KDE、Konsole、键盘、bash 快捷方式、bash 别名、bash 提示符等的配置。
它不会重复设置,因此如果您正在微调或重新开发它,则可以多次运行它。
它是根据我的需要量身定制的,但使其适应您的需要只需花费我从头开始开发它所花费时间的一小部分。