Kickstart:通过 CGI 或 PHP 脚本提供动态 kickstart 图像?

Ste*_*ski 5 redhat kickstart provisioning

我想启动几十个 RHEL6/SL6 服务器。但是,其中一些服务器是不同的,我不想为每类服务器创建一个新的 ks.cfg 文件。

有什么方法可以从模板动态生成 Kickstart 文件?

例如,如果我将这样的行附加到内核:

APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp
Run Code Online (Sandbox Code Playgroud)

然后脚本 ks.cgi 可以确定这是什么主机(通过 MAC 地址),并打印出适合该主机的 Kickstart 选项。我可以通过将参数传递给脚本来选择性地覆盖一些选项,如下所示:

APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80
Run Code Online (Sandbox Code Playgroud)

在我们启动服务器之后,我们在这个系统上激活 Cfengine/Puppet 并使用我们最喜欢的配置管理产品来管理系统。

我们正在试验xCAT,但事实证明它太麻烦了。我已经研究过Cobbler,但我不确定它是否这样做。

更新:

在 O'Reilly 的书:Managing RPM-Based Systems with Kickstart and Yum,第 3 章自定义您的 Kickstart 安装 > 动态 ks.cfg 中讨论了您自己的解决方案,这与此线程中的一些评论相呼应:

实现这样的工具超出了这个 Short Cut 的范围,但我可以完成高级设计。任何此类解决方案都会将数据存储(发生变化的事物)与模板解决方案(不变的事物)混合在一起。数据存储将保存每台机器的数据,例如 IP 地址和主机名。您还需要一个唯一标识符,可能是主机名,以便您可以获取给定机器的数据。数据存储可以是平面文件、XML 数据或关系数据库,例如 PostgreSQL 或 MySQL。

反过来,为了调用系统,您将机器的唯一标识符作为 URL 参数传递。例如:

启动:linux ks= http://your.kickstart.server/gen_config?host-server25

在此示例中,CGI(或 servlet,或其他)为机器 server25 生成 ks.cfg。

但是 ks.cgi 的代码在哪里?

eww*_*ite 2

Cobbler 支持 kickstart 配置文件,但 kickstart 与 PHP 配合得很好,因此您可以在行中传递参数ks=...。您最终可能会自己编写脚本。