KS文件相关问题总结
发表于 2025/09/10
0
作者|朱勇
1.在KS文件里面添加%post执行脚本后执行没生效
问题描述
在ks文件中添加了一个执行脚本,该脚本的逻辑主要是将一个修改IP地址的脚本(修改ifcfg-eth文件)放入“/etc/rc.d/rc.local”中执行,脚本内容如下。上传该脚本到安装好操作系统的客户端,随后给修改IP地址的脚本(changeip.sh)赋予执行权限并执行脚本,随后将该脚本移至“/tmp”目录下。从客户的观察情况来看,修改脚本已经成功赋予了执行权限,并且脚本也被移至“/tmp”目录,但脚本并没有修改客户端的IP地址,需操作系统安装好后再进入客户端手动执行该脚本。
可能原因
使用cobbler重新安装一台服务器的操作系统后,进入操作系统内查看,网卡文件内容并未被修改,但是changip.sh已被移动到“/tmp”目录下,说明该脚本已被执行过,但可能因为文件系统未初始化完成或者其他原因导致未能成功修改网卡文件。
解决方法
1.在安装操作系统后,将执行changeip.sh脚本的命令设置为一个只执行一次的定时任务,等系统安装好后一段时间自动执行即可修改IP地址。
2.将changeip.sh永久加入“/etc/rc.d/rc.local”中,但执行前判断网卡文件内是否已经配置了IP地址,如果未配置IP地址就执行changeip.sh脚本。安装操作系统后重启一次操作系统即可。
2.在引导文件里ks要手动改成inst.ks,但是在执行cobbler sync后又会变成ks
问题描述
客户在cobbler配置的引导文件“/var/lib/tftpboot/efidefault”中添加了多种操作系统类型,其中对于openEuler,需将ks修改为inst.ks才能成功引导操作系统。客户手动修改为inst.ks后,执行cobbler sync命令,内容会被自动修改回ks。解决方法
客户使用的cobbler版本为2.8.5,在“/usr/lib/python2.7/site-packages”目录下的pxegen.py文件中,其中799行针对该引导文件“/var/lib/tftpboot/efidefault”做了初始化操作,在欧拉版本的cobbler3.1中,通过添加一个openEuler操作系统的判定,来生成自定义的引导文件,参考如下。但在客户现场环境上,该修改未生效。
使用print语句测试,执行多次cobbler sync命令,在“/var/log”目录下搜索关键字,只有两次进行了print,之后无论如何修改重启cobbler服务,都没有再print过,开始怀疑pxegen.py中的代码是否被执行过。
在pxegen.py中797行附近将distro.breed写入到文件中,发现所有的distro.breed值都是redhat。
客户使用add的方式添加镜像,而非导入的方式。
使用cobbler distro report –name命令查看客户导入的openEuler镜像信息:发现果然breed的值是redhat,从这里可以看出来,pxegen.py中的distro对象中的属性跟这里列出的属性是对应的,因此可以通过initrd和kernel来进行判断欧拉的镜像,故在pxegen.py中添加以下代码,验证后问题解决。