Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

27.3.5. インストール後のスクリプト

インストールが完了し、システムを最初に再起動する前に、システムで実行するコマンドを追加するオプションがあります。このセクションは、「キックスタートのコマンドとオプション」 にあるキックスタートコマンドの後で、キックスタートファイルの終わりの方に配置し、%post で始まり %end で終了する必要があります。キックスタートファイルに %pre セクションも含まれる場合は、%pre%post セクションの順番は重要ではありません。
このセクションは、追加ソフトウェアのインストールや追加のネームサーバーの設定といった機能に役立ちます。インストール後のスクリプトは chroot 環境で実行されるので、インストールメディアからスクリプトや RPM をコピーするなどの作業はデフォルトでは機能しません。この動作は、以下で説明されているように --nochroot オプションを使用して変更できます。
インストール後のスクリプトは chroot 環境で実行されるので、systemctl コマンドはいかなるアクションも拒否します。詳細については、Red Hat Enterprise Linux 7 の『システム管理者のガイド』の「chroot 環境における systemctl の動作」セクションを参照してください。
重要
ネームサーバを含めて、ネットワークを静的 IP 情報で設定した場合は、ネットワークにアクセスして、%post セクション内で IP アドレスを解決できます。ネットワークを DHCP 用に設定した場合は、インストールが %post セクションを実行する時点では /etc/resolv.conf ファイルは完了していません。ネットワークにアクセスすることはできますが、IP アドレスは解決できません。このため、DHCP を使用する場合は、%post セクションに IP アドレスを指定する必要があります。
以下のオプションを使用して、インストール後のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %post 行にオプションを追加してください。以下に例を示します。
%post --interpreter=/usr/bin/python
--- Python script omitted --
%end
--interpreter=
Python などの別のスクリプト言語を指定できます。以下に例を示します。
%post --interpreter=/usr/bin/python
システムで利用可能なスクリプト言語は、どれでも使用できます。ほとんどの場合、/usr/bin/sh/usr/bin/bash、および /usr/bin/python になります。
--nochroot
chroot 環境外で実行するコマンドを指定できます。
以下の例では、ファイル /etc/resolv.conf をインストールされたばかりのファイルシステムにコピーします。
%post --nochroot
cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
%end
--erroronfail
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。
--log=
スクリプトの出力を指定されたログファイルにログします。ログファイルのパスは、--nochroot オプションを使用しているかどうかを考慮に入れる必要があることに注意してください。--nochroot がない場合の例を示します。
%post --log=/root/ks-post.log
--nochroot:
%post --nochroot --log=/mnt/sysimage/root/ks-post.log
以下は %post セクションの例です。

例27.7 %post スクリプトの例

# Start of the %post section with logging into /root/ks-post.log
%post --log=/root/ks-post.log

# Mount an NFS share
mkdir /mnt/temp
mount -o nolock 10.10.0.2:/usr/new-machines /mnt/temp
openvt -s -w -- /mnt/temp/runme
umount /mnt/temp

# End of the %post section
%end
上記の例では、NFS シェアをマウントし、そのシェア上で /usr/new-machines/ にある runme という名前のスクリプトを実行します。キックスタートモードでは NFS ファイルのロックがサポートされていないため、-o nolock オプションが必要となることに注意してください。
キックスタートを使ったインストールで最もよく使われるインストール後のスクリプトの一つは、Red Hat Subscription Manager を使ったインストール済みシステムの自動登録です。以下は、%post スクリプトの自動サブスクリプションの例です。

例27.8 インストール後のスクリプトで subscription-manager を実行する

%post --log=/root/ks-post.log
/usr/sbin/subscription-manager register --username=admin@example.com --password=secret --serverurl=sam-server.example.com --org="Admin Group" --environment="Dev" --servicelevel=standard --release="7.0"
%end
subscription-manager のコマンドラインスクリプトで、システムが Red Hat Subscription Management サーバー (カスタマーポータルによるサブスクリプション管理、Subscription Asset Manager、CloudForms System Engine など) に登録されます。このスクリプトは、システムに最も適したサブスクリプションをそのシステムに自動的に割り当てる場合にも使用できます。
カスタマーポータルに登録する場合は、Red Hat ネットワークのログインに使用する認証情報を使用します。Subscription Asset Manager や CloudForms System Engine に登録する場合には、ローカルの管理者が作成したユーザーアカウントを使用します。
登録コマンドで追加オプションを使用してシステムに適したサービスレベルを設定し、また特定のオペレーティングシステムのバージョンに対する更新やエラータを制限できます。
キックスタートファイルの %post セクションにおける subscription-manager の使用方法については、Red Hat カスタマーポータルの「How do I use subscription-manager in a kickstart file?」の記事も参照してください。