読者です 読者をやめる 読者になる 読者になる

Kickstartテンプレート内でシェル変数を書く場合の注意点

Cobbler

テンプレートから最終的なKickstartを生成時に$が展開されないように、エスケープしておく。

Cobblerのキックスタートのテンプレート内に、

# Disable unnecessary services
for name in acpid auditdi autofs avahi-daemon bluetooth \
            cups firstboot gpm hidd ip6tables mcstrans \
            mdmonitor netfs nfslock pcscd restorecond \
            rpcgssd rpcidmapd xfs
do
  /sbin/chkconfig $name off
  /sbin/service $name stop
done

のように書いて、「これで不要なサービスを止められるぜ!」と思ったら、

$ sudo cobbler sysmtem getks --name="spam"

# Disable unnecessary services
for name in acpid auditdi autofs avahi-daemon bluetooth \
            cups firstboot gpm hidd ip6tables mcstrans \
            mdmonitor netfs nfslock pcscd restorecond \
            rpcgssd rpcidmapd xfs
do
  /sbin/chkconfig spam off
  /sbin/service spam stop
done

のように$nameが展開されてしまった。

そうか、Cheetahも変数は$で始まるんだったと思いつつ、

# Disable unnecessary services
for name in acpid auditdi autofs avahi-daemon bluetooth \
            cups firstboot gpm hidd ip6tables mcstrans \
            mdmonitor netfs nfslock pcscd restorecond \
            rpcgssd rpcidmapd xfs
do
  /sbin/chkconfig \$name off
  /sbin/service \$name stop
done

のようにKickstartテンプレートを修正。

$ sudo cobbler sysmtem getks --name="spam"

# Disable unnecessary services
for name in acpid auditdi autofs avahi-daemon bluetooth \
            cups firstboot gpm hidd ip6tables mcstrans \
            mdmonitor netfs nfslock pcscd restorecond \
            rpcgssd rpcidmapd xfs
do
  /sbin/chkconfig $name off
  /sbin/service $name stop
done

今度は意図したとおりのKickstartファイルが得られた。