我想Kickstart几个RHEL6 / SL6服务器。 但是,其中一些服务器是不同的,我不想为每个类的服务器创build一个新的ks.cfg文件。
有没有什么办法可以从模板上dynamic生成Kickstart文件?
例如,如果我将这样的一行添加到内核:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp
然后脚本ks.cgi可以确定这是什么主机(通过MAC地址),并打印出适合该主机的Kickstart选项。 我可以select通过传递参数到脚本来覆盖一些选项,如下所示:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80
在我们启动服务器之后,我们在这个系统上激活Cfengine / Puppet并使用我们最喜欢的configurationpipe理产品来pipe理系统。
我们正在尝试使用xCAT,但这样做太麻烦了。 我已经看过了补鞋匠 ,但我不确定这是否。
更新:
在O'Reilly的书中讨论了自己的解决scheme: 使用Kickstart和Yumpipe理基于RPM的系统,第3章。自定义你的Kickstart安装>dynamicks.cfg ,它反映了这个线程中的一些注释:
实现这样一个工具已经超出了这个捷径的范围,但我可以通过高层次的devise。 任何这样的解决scheme将混合数据存储(改变的东西)与模板解决scheme(不改变的东西)。 数据存储将保存每台机器的数据,例如IP地址和主机名。 你还需要一个唯一的标识符,也许是主机名,这样你可以拿起一台机器的数据。 数据存储可以是平面文件,XML数据或关系数据库,例如PostgreSQL或MySQL。
反过来,为了调用系统,您将一个机器的唯一标识符作为URLparameter passing。 例如:
boot:linux ks = http://your.kickstart.server/gen_config?host-server25
在这个例子中,CGI(或servlet,或其他)为机器server25生成一个ks.cfg。
但是,哦,在哪里,是ks.cgi的代码?
既然你已经在使用傀儡,你还可以看看福尔曼先进的kickstart模板。
工头使用ruby模板,允许灵活的kickstart模板 。
我有一个简单的专有解决scheme,我使用PHP作为模板语言,而kickstart文件是由本地服务器上的PHP脚本实时生成的。
如果你知道如何编写kickstart文件,创build这样的事情的过程是非常简单的(如果你想学习如何,请参阅这个红帽文档 ):
例如,replace
network --device eth0 --bootproto dhcp --hostname SOME_STATIC_HOSTNAME
同
network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>
基本上就是这样。
我想拥有漂亮的URL,所以引导加载程序会这样说:
linux ksdevice=eth0 ks=http://myserver/kickstart/rhel6/networkname/servername/ks.cfg
将所有参数指定为path元素。 为此,我为Apache网页服务器创build了一个.htaccess文件,如下所示:
RewriteEngine On RewriteBase /kickstart RewriteRule kickstart/(.*) /company-kickstart.php/$1
然后PHP脚本做这样的事情:
<?php list($empty,$os,$envtype,$hostname,$notimportant) = explode("/",$_SERVER['PATH_INFO']); header("Content-Type: text/plain"); # important, otherwise kickstart fails ?> # Kickstart file automatically generated by my script. #version=<?php echo $os;?> install url --url=http://my.local.mirror/<?php echo $os;?>/os/x86_64 lang en_US.UTF-8 keyboard us network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?> # ... rest of kickstart parameters
Cobbler支持kickstartconfiguration文件 ,但是kickstart在PHP中运行得非常好,所以你可以在你的ks=...行中传递参数。 你可能最终自己写脚本。