B.3. キックスタートファイル内のスクリプト
キックスタートファイルには以下のスクリプトを追加できます。
-
%pre -
%pre-install -
%post
このセクションでは、スクリプトに関する以下の情報を提供します。
- 実行時間
- スクリプトに追加できるコマンドのタイプ
- スクリプトの目的
- スクリプトオプション
B.3.1. %pre スクリプト リンクのコピーリンクがクリップボードにコピーされました!
%pre スクリプトは、キックスタートファイルの読み込み直後 (スクリプトが完全に解析され、インストールが開始する前) にシステムで実行されます。各セクションは、%pre で開始し、%end で終了する必要があります。
%pre スクリプトは、ネットワークおよびストレージデバイスのアクティベートおよび設定に使用できます。また、インストール環境で利用可能なインタープリターを使用して、スクリプトを実行することもできます。インストールを進める前に特定の設定を必要とするネットワークやストレージがある場合や、追加のログパラメーターや環境変数などを設定するスクリプトがある場合には、%pre スクリプトが便利になります。
%pre スクリプトでの問題のデバッグは難しくなる可能性があるため、%pre スクリプトは必要な場合にのみ使用することが推奨されます。
キックスタートの %pre セクションは、インストーラーイメージ (inst.stage2) がフェッチされた後に発生するインストールの段階で実行されます。これは、root がインストーラー環境 (インストーラーイメージ) に切り替わった 後、および Anaconda インストーラー自体が起動した 後 に実行されます。次に、%pre の設定が適用され、キックスタートの URL などで設定されたインストールリポジトリーからパッケージを取得するために使用できます。ただし、ネットワークからイメージ (inst.stage2) をフェッチするようにネットワークを設定するために使用する ことはできません。
インストール環境の /sbin ディレクトリーおよび /bin ディレクトリーにあるほとんどのユーティリティーの他に、%pre スクリプトでは、ネットワーク、ストレージ、およびファイルシステムに関連するコマンドを使用できます。
%pre セクションのネットワークにはアクセスできます。この時点では name サービスが設定されていないため、URL ではなく IP アドレスだけが有効です。
pre スクリプトは、chroot 環境では実行しません。
B.3.1.1. %pre スクリプトセクションのオプション リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションを使用して、インストール前のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %pre 行にオプションを追加してください。以下に例を示します。
%pre --interpreter=/usr/libexec/platform-python -- Python script omitted -- %end
%pre --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=Python などの別のスクリプト言語を指定できます。システムで利用可能なスクリプト言語は、どれでも使用できます。ほとんどの場合は、
/usr/bin/sh、/usr/bin/bash、および/usr/libexec/platform-pythonになります。platform-pythonインタープリターは、Python バージョン 3.6 を使用することに注意してください。新しいパスおよびバージョン用に、Python スクリプトを以前の RHEL バージョンから変更する必要があります。また、platform-pythonはシステムツール向けです。インストール環境外でpython36を使用してください。Red Hat Enterprise Linux の Python の詳細は、基本的なシステム設定 の Python の概要 を参照してください。--erroronfail-
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。インストールされたシステムは、不安定で起動できない状態になる可能性があります。
inst.nokillオプションを使用して、スクリプトをデバッグできます。 --log=スクリプトの出力を、指定したログファイルに記録します。以下に例を示します。
%pre --log=/tmp/ks-pre.log
%pre --log=/tmp/ks-pre.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
B.3.2. %pre-install スクリプト リンクのコピーリンクがクリップボードにコピーされました!
pre-install スクリプトのコマンドは、以下のタスクの完了後に実行されます。
- システムのパーティションを設定した。
- ファイルシステムは /mnt/sysroot の下に作成およびマウントされます
- ネットワークが起動オプションとキックスタートコマンドに従って設定されている。
各 %pre-install セクションは、%pre-install で開始し、%end で終了します。
%pre-install スクリプトを使用してインストールを修正して、パッケージのインストール前に保証されている ID があるユーザーとグループを追加できます。
インストールに必要な変更には、%post スクリプトを使用することが推奨されます。%pre-install スクリプトは、%post スクリプトが必要な変更に満たない場合に限り使用します。
pre-install スクリプトは chroot 環境では動作しません。
B.3.2.1. %pre-install スクリプトセクションオプション リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションを使用して、pre-install のスクリプトの動作を変更できます。オプションを使用する場合は、スクリプトの先頭にある %pre-install 行に追加してください。以下に例を示します。
%pre-install --interpreter=/usr/libexec/platform-python -- Python script omitted -- %end
%pre-install --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
同じまたは異なるインタープリターを使用して、複数の %pre-install セクションを含めることができます。設定したものは、キックスタートファイル内の参照順に評価されます。
--interpreter=Python などの別のスクリプト言語を指定できます。システムで利用可能なスクリプト言語は、どれでも使用できます。ほとんどの場合は、
/usr/bin/sh、/usr/bin/bash、および/usr/libexec/platform-pythonになります。platform-pythonインタープリターは Python バージョン 3.6 を使用します。新しいパスおよびバージョン用に、Python スクリプトを以前の RHEL バージョンから変更する必要があります。また、platform-pythonはシステムツール向けです。インストール環境外でpython36を使用してください。Red Hat Enterprise Linux の Python の詳細は、基本的なシステム設定 の Python の概要 を参照してください。--erroronfail-
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。インストールされたシステムは、不安定で起動できない状態になる可能性があります。
inst.nokillオプションを使用して、スクリプトをデバッグできます。 --log=スクリプトの出力を、指定したログファイルに記録します。以下に例を示します。
%pre-install --log=/mnt/sysroot/root/ks-pre.log
%pre-install --log=/mnt/sysroot/root/ks-pre.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
B.3.3. %post スクリプト リンクのコピーリンクがクリップボードにコピーされました!
%post スクリプトは、インストールが完了した後、システムが最初に再起動する前に実行されるインストール後のスクリプトです。このセクションでは、システムのサブスクリプションなどのタスクを実行できます。
インストールが完了し、システムを最初に再起動する前に、システムで実行するコマンドを追加するオプションがあります。このセクションは、%post で始まり、%end で終了します。
%post セクションは、追加ソフトウェアのインストールや、追加のネームサーバーの設定といった機能に役に立ちます。インストール後のスクリプトは chroot 環境で実行するため、インストールメディアからスクリプトや RPM をコピーするなどの作業はデフォルトでは機能しません。この動作は、以下に記載されるように --nochroot オプションを使用することで変更できます。その後、%post スクリプトはインストール環境で実行し、インストール済みのターゲットシステムの chroot で実行することはありません。
インストール後のスクリプトは chroot 環境で実行されるため、ほとんどの systemctl コマンドはいかなるアクションも拒否します。
%post セクションの実行中は、インストールメディアを挿入したままにする必要があります。
B.3.3.1. %post スクリプトセクションオプション リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションを使用して、インストール後のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %post 行にオプションを追加してください。以下に例を示します。
%post --interpreter=/usr/libexec/platform-python -- Python script omitted -- %end
%post --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=Python などの別のスクリプト言語を指定できます。以下に例を示します。
%post --interpreter=/usr/libexec/platform-python
%post --interpreter=/usr/libexec/platform-pythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムで利用可能なスクリプト言語は、どれでも使用できます。ほとんどの場合は、
/usr/bin/sh、/usr/bin/bash、および/usr/libexec/platform-pythonになります。platform-pythonインタープリターは Python バージョン 3.6 を使用します。新しいパスおよびバージョン用に、Python スクリプトを以前の RHEL バージョンから変更する必要があります。また、platform-pythonはシステムツール向けです。インストール環境外でpython36を使用してください。Red Hat Enterprise Linux の Python の詳細は、基本的なシステム設定 の Python の概要 を参照してください。--nochrootchroot 環境外で実行するコマンドを指定できます。
以下の例では、/etc/resolv.conf ファイルを、インストールしたばかりのファイルシステムにコピーします。
%post --nochroot cp /etc/resolv.conf /mnt/sysroot/etc/resolv.conf %end
%post --nochroot cp /etc/resolv.conf /mnt/sysroot/etc/resolv.conf %endCopy to Clipboard Copied! Toggle word wrap Toggle overflow --erroronfail-
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。インストールされたシステムは、不安定で起動できない状態になる可能性があります。
inst.nokillオプションを使用して、スクリプトをデバッグできます。 --log=スクリプトの出力を、指定したログファイルに記録します。ログファイルのパスを指定する際には、
--nochrootオプションを使用するかどうかを考慮する必要があります。--nochrootがない場合の例を示します。%post --log=/root/ks-post.log
%post --log=/root/ks-post.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow --nochrootを使用した場合は、以下のようになります。%post --nochroot --log=/mnt/sysroot/root/ks-post.log
%post --nochroot --log=/mnt/sysroot/root/ks-post.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
B.3.3.2. たとえば、以下のようになります。インストール後スクリプトで NFS のマウント リンクのコピーリンクがクリップボードにコピーされました!
この %post セクション例では、NFS 共有をマウントし、共有の /usr/new-machines/ に置かれた runme スクリプトを実行します。キックスタートモードでは NFS ファイルのロックがサポートされないため、-o nolock オプションが必要です。
B.3.3.3. 以下に例を示します。インストール後のスクリプトで subscription-manager の実行 リンクのコピーリンクがクリップボードにコピーされました!
キックスタートを使用したインストールで最もよく使用されるインストール後のスクリプトの 1 つは、Red Hat Subscription Manager を使用したインストール済みシステムの自動登録です。以下は、%post スクリプトの自動サブスクリプションの例です。
%post --log=/root/ks-post.log subscription-manager register --username=admin@example.com --password=secret --auto-attach %end
%post --log=/root/ks-post.log
subscription-manager register --username=admin@example.com --password=secret --auto-attach
%end
subscription-manager のコマンドラインスクリプトで、システムが Red Hat Subscription Management サーバー (カスタマーポータルによるサブスクリプション管理、Satellite 6、CloudForms System Engine) に登録されます。このスクリプトは、システムに最も適したサブスクリプションをそのシステムに自動的に割り当てる場合にも使用できます。カスタマーポータルに登録する場合は、Red Hat Network ログイン認証情報を使用します。Satellite 6 または CloudForms System Engine に登録する場合は、ローカル管理者が提供する認証情報に加え、--serverurl、--org、--environment などの subscription-manager オプションも指定する必要があります。共有キックスタートファイルで、--username --password 値を公開しないようにするには、認証情報が、--org --activationkey の組み合わせの形式で使用されます。
登録コマンドで追加オプションを使用してシステムの優先サービスレベルを設定し、更新およびエラータを、以前のストリームで修正が必要な Extended Update Support サブスクリプションをお持ちのお客様の、特定のマイナーリリースバージョンの RHEL に制限することができます。
subscription-manager コマンドの使用に関する詳細は、Red Hat ナレッジベースソリューション キックスタートファイルで subscription-manager を使用する方法を 参照してください。