众所周知,设置发行版的全新安装可能非常耗时。即使手头上有所有的点文件,手动安装和设置各种软件包和应用程序也需要花费大量时间。因此,最近我一直想知道是否有任何关于此过程自动化的工具/最佳实践?有没有通用的工具?或者普通的 ol' shell 脚本(针对不同的发行版/硬件配置)就足够了吗?
这是一个链接有关此主题的更多信息。作者的安装后 shell 脚本包含约 2000 行代码。
答案1
方法很多:
对于 RHEL:在 anaconda (?) 安装定义中选择不同的软件包
debian:让 deb-installer 添加想要的软件包。
某种类型的配置管理:
- cf引擎
- 安西布尔
- 木偶
对于 Solaris,有安装程序守护程序,强制计算机在首次启动时通过网络启动,并在该网络启动安装中部署到本地磁盘,然后重新启动 - 完成。
如果您稍后需要修改机器(认为是工作站网络,而不是服务器),请修改安装服务器并强制机器进行网络启动。
答案2
我通常也使用自己的脚本。当然,有多少 Linux 用户就有多少有用的项目、curl <my-installer> | bash
脚本甚至简单的 shell 函数。
我喜欢云初始化很多,可能会在我的下一个快速服务器/开发盒设置中使用它。安西布尔等人。可能有助于重新使用社区或个人/公司模块化系统配置设置。但是,如果您关心的话,一个简单的“cloud-init”脚本也可以做到这一点[我确实想知道 cloud-init 是否支持对其引入的 Web 内容进行校验,这是我首先会考虑的]。
作为一个“项目”,它有点不成熟(并且需要一个自信/经验丰富的 shell 用户对其他人的脚本保持谨慎),但我自己的“apt-get.list”演变成这样:https://github.com/dotmpe/user-conf。我花了很多时间来完成安装脚本 LoC。如果您没有在特定的虚拟机/容器/“虚拟应用程序”系统上花费太多时间(或者像 Vagrant,只需知道它们可以做什么),那么您可以使用一些自动化 shell 和最少的手动复制来完成很多工作-paste/ssh-copy-id/scp/adduser/usermod/等。脚步。
最重要的是:所有这些都需要一些带有选择的结构,可能是点文件的存储库或服务器,而且还需要一些关于密钥和令牌、网络的想法,可能是不同的用户以及您(需要)关心的任何组件视图/抽象。我仍然经常使用 cURL/GIT/Bash,而 cloud-init 可以很好地做到这一点。我也在研究 Ansible 模块/角色,但关键点是我认为你应该看看你喜欢哪种配置系统设置。代理或者只是 SSH 或者其他东西。