注意: 訂正記事も併せて読んでください。『
Xen DomUインストールでAnaconda Kickstartを使う』『
Kickstart中のパスワードの暗号化』で
Anaconda Kickstartを使った自動インストールを紹介した。
このKickstartでは、設定ファイル中に、OSインストール直後(あるいは直前)に自動実行させたいスクリプトを記述できる。これを%postスクリプト(あるいは%preスクリプト)と呼ぶ
(Postscriptとは関係ない。念の為)。
例えば、SSHDについて、
/etc/ssh/sshd_config
を編集してパスワードログインやrootログインを禁止したり、
~ユーザ/.ssh/authorized_keys2
を作成して、公開鍵でログイン可能にしたり、という設定作業を自動化する等の応用が考えられる。その場合、設定ファイル中に、
%post
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/bin/mkdir ~ユーザ/.ssh
/bin/chmod 600 ~ユーザ/.ssh
/bin/cat > ~ユーザ/.ssh/authorized_keys2 <<EOL
ssh-dss AAAAB3NzaC1kc3MAAACBAIsk92QYQGB8GRK+zHp/7JaXjBA+Jglm2MR3mO1uJtGncof+O/89
<<略>>
DxgLIXtME7riQMSVp3ImnMT9Q7bNJUWiGaZB6v5BBDYe86blSw/Wl/JSDg8= whoami@whereishere
EOL
/bin/chmod 644 ~ユーザ/.ssh/authorized_keys2
/bin/chown -R ユーザ.グループ ~ユーザ/.ssh
%end
と記述する。
では、このスクリプトをデバッグするにはどうすればよいだろうか?これにはいくつかの方法がある。
最初の方法は、Kickstartのログをとることだ。これは、Kickstart設定ファイル中にSYSLOGサーバのアドレスを
logging --host=192.168.55.10
の様に指定すればよい。ただし、このログには、%postスクリプトが出力するエラーメッセージは含まれない。
次に、%postスクリプトのログをファイルに書き出すことも可能だ。これは、
%post
コマンドに
--log=ファイル名
を指定すればよい。例えば、
%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
ここでファイルのパスに注目して欲しい。ここで指定するのは、Anacondaから認識されているパス名なので、OSインストール後のパス名の前に
/mnt/sysimage
を付加する必要がある。
オプション
--erroronfail
は、スクリプトにエラーがあった場合にインストールを失敗させるための指定だ。
ただ、この方法は、実行の様子をリアルタイムに見れるわけではない。バッファリングの関係で、標準出力と標準エラーの内容が前後してしまうことがある。
最後は、ターミナルに表示させる方法だ。これは、%postスクリプトの最初に、
%post
exec < /dev/tty3 > /dev/tty3
/usr/bin/chvt 3
最後に、
/usr/bin/chvt 1
%end
と記述すればよい。この指定によって、スクリプトの出力をtty3へ送り、表示する画面を
chvt
コマンドで切替えている。この方法の利点は、実行の様子をリアルタイムに観察できることだ。
なお、Kickstartインストール中は、tty1がテキストインストール画面、tty6がGUIインストール画面で、tty2には対話的なシェルが立ち上がっている。[Ctrl]+[Fn]で切替えることができる。
参考:『
Tips and tricks for anaconda and kickstart』