cobbler snippet 的使用

cobbler 可以通过 cheetah 来做一些定制话的事情。因此需要严格遵循其语法,可以先参考下 /var/lib/cobbler/snippets/ 目录下的 snippet 是怎么写的。这里面会涉及到很多的变量,可以使用下面这条命令将其 dump 出来:
# cobbler system profile dumpvars --name=jaseywang_profile

这样就可以在 snippet 里面直接引用了。比如我在 snippets/ 目录下面再建立一个 custom/ 目录,专门存放我们自己写的 snippet。
一个标准的 hosts 文件应该像下面这样:
127.0.0.1   localhost.localdomain    localhost
192.168.1.2 system1.jaseywang.me     system1

下面这个 snippet 要做的事情就是完成上面 hosts 的标准:
$ cat /var/lib/cobbler/snippets/custom/hosts
#set $hostname = $getVar('$hostname', None)
#set $hostpart = $hostname.split('.')[0]

#set $ikeys = $interfaces.keys()
#for $iface in $ikeys
#set $idata = $interfaces[$iface]
#set $my_interface_hostname_short = $idata["dns_name"].split('.',1)[:1][0]
#end for

cat > /etc/hosts << EOF
127.0.0.1           localhost.localdomain       localhost
$idata["ip_address"]        $idata["dns_name"].lower()          $my_interface_hostname_short.lower()
EOF

注意其语法,虽然感觉有点奇怪。这样书写好了以后就可以在 ks 的 %post 里面将其添加进去了:
%post

#$SNIPPET('custom/hosts')

以上就完成了一个 post install 的 snippet 的书写,其他的跟以上的类似。