検索

A.3. キックスタートファイル内のスクリプト

download PDF

キックスタートファイルには以下のスクリプトを追加できます。

  • %pre
  • %pre-install
  • %post

本セクションでは、スクリプトに関する以下の情報を提供します。

  • 実行時間
  • スクリプトに追加できるコマンドのタイプ
  • スクリプトの目的
  • スクリプトオプション

A.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 環境では実行しません。

A.3.1.1. %pre スクリプトセクションのオプション

以下のオプションを使用して、インストール前のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %pre 行にオプションを追加してください。以下に例を示します。

%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

A.3.2. %pre-install スクリプト

pre-install スクリプトのコマンドは、以下のタスクの完了後に実行されます。

  • システムのパーティションを設定した。
  • ファイルシステムは /mnt/sysroot の下に作成およびマウントされます
  • ネットワークが起動オプションとキックスタートコマンドに従って設定されている。

%pre-install セクションは、%pre-install で開始し、%end で終了します。

%pre-install スクリプトを使用してインストールを修正して、パッケージのインストール前に保証されている ID があるユーザーとグループを追加できます。

インストールに必要な変更には、%post スクリプトを使用することが推奨されます。%pre-install スクリプトは、%post スクリプトが必要な変更に満たない場合に限り使用します。

注記: pre-install スクリプトは、chroot 環境では実行しません。

A.3.2.1. %pre-install スクリプトセクションオプション

以下のオプションを使用して、pre-install のスクリプトの動作を変更できます。オプションを使用する場合は、スクリプトの先頭にある %pre-install 行に追加してください。以下に例を示します。

%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

A.3.3. %post スクリプト

%post スクリプトは、インストールが完了した後、システムが最初に再起動する前に実行されるインストール後のスクリプトです。本セクションでは、システムのサブスクリプションなどのタスクを実行できます。

インストールが完了し、システムを最初に再起動する前に、システムで実行するコマンドを追加するオプションがあります。このセクションは、%post で始まり、%end で終了します。

%post セクションは、追加ソフトウェアのインストールや、追加のネームサーバーの設定といった機能に役に立ちます。インストール後のスクリプトは chroot 環境で実行するため、インストールメディアからスクリプトや RPM をコピーするなどの作業はデフォルトでは機能しません。この動作は、以下に記載されるように --nochroot オプションを使用することで変更できます。その後、%post スクリプトはインストール環境で実行し、インストール済みのターゲットシステムの chroot で実行することはありません。

インストール後のスクリプトは chroot 環境で実行されるため、ほとんどの systemctl コマンドはいかなるアクションも拒否します。

%post セクションの実行中にも、インストールメディアが挿入される必要があることに注意してください。

A.3.3.1. %post スクリプトセクションオプション

以下のオプションを使用して、インストール後のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %post 行にオプションを追加してください。以下に例を示します。

%post --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=

Python などの別のスクリプト言語を指定できます。以下に例を示します。

%post --interpreter=/usr/libexec/platform-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 の概要 を参照してください。

--nochroot

chroot 環境外で実行するコマンドを指定できます。

以下の例では、/etc/resolv.conf ファイルを、インストールしたばかりのファイルシステムにコピーします。

%post --nochroot
cp /etc/resolv.conf /mnt/sysroot/etc/resolv.conf
%end
--erroronfail
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。インストールされたシステムは、不安定で起動できない状態になる可能性があります。inst.nokill オプションを使用して、スクリプトをデバッグできます。
--log=

スクリプトの出力を、指定したログファイルに記録します。ログファイルのパスは、ユーザーが --nochroot オプションを使用しているかどうかを考慮に入れる必要があることに注意して下さい。--nochroot がない場合の例を示します。

%post --log=/root/ks-post.log

--nochroot を使用した場合は、以下のようになります。

%post --nochroot --log=/mnt/sysroot/root/ks-post.log

A.3.3.2. 例: インストール後スクリプトで NFS のマウント

この %post セクション例では、NFS 共有をマウントし、共有の /usr/new-machines/ に置かれた runme スクリプトを実行します。キックスタートモードでは NFS ファイルのロックがサポートされていないため、-o nolock オプションが必要となることに注意してください。

# 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
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.