1.5.10. デバイスのライフサイクルフック


テクノロジープレビュー: Red Hat Edge Manager エージェントは、デバイスライフサイクルフックを使用して、デバイスライフサイクルの特定のポイントでユーザー定義のコマンドを実行できます。たとえば、アプリケーションデータのバックアップを作成するオペレーティングシステムイメージにシェルスクリプトを追加できます。次に、エージェントがオペレーティングシステムの更新を開始する前に、スクリプトが実行され、正常に完了するように指定できます。

別の例として、特定のアプリケーションやシステムサービスは、ファイルがディスク上で変更されても、設定ファイルを自動的にリロードしません。エージェントが更新プロセスを完了した後に呼び出される別のフックとしてコマンドを指定することで、設定ファイルを手動でリロードできます。

次のデバイスのライフサイクルフックがサポートされています。

Expand

ライフサイクルフック

説明

beforeUpdating

エージェントが更新の準備を完了した後、ただし、オペレーティングシステムを変更する前に、フックが呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルします。

afterUpdating

フックは、エージェントがディスクに更新を書き込んだ後に呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。

beforeRebooting

フックは、システムが再起動する前に呼び出されます。エージェントは、アクションの完了またはタイムアウトまで再起動をブロックします。このフックの何らかのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。

afterRebooting

フックは、エージェントが再起動後に最初に起動すると呼び出されます。このフックの何らかのアクションが失敗を返した場合、エージェントは失敗を報告しますが、起動を継続します。

1.5.10.1. ルールファイル

デバイスのファイルシステムの以下のいずれかのロケーションに、ルールファイルを追加することで、デバイスのライフサイクルフックを定義できます。

  • /usr/lib/flightctl/hooks.d/<lifecycle_hook_name>/ ドロップインディレクトリーのルールは読み取り専用です。/usr ディレクトリーにルールを追加するには、イメージのビルド中にオペレーティングシステムイメージにルールを追加する必要があります。
  • /etc/flightctl/hooks.d/<lifecycle_hook_name>/ ドロップインディレクトリーのルールは読み書きが可能です。いくつかの方法を使用して、実行時にルールを更新できます。

ファイルを作成して配置するときは、以下を考慮する必要があります。

  • ルールの名前はすべて小文字である必要があります。
  • 両方の場所でルールを定義すると、ルールが結合されます。
  • 複数のルールファイルをライフサイクルフックディレクトリーに追加すると、ファイルはファイル名の辞書的な順序で処理されます。
  • 両方のロケーションで同じファイル名を持つファイルを定義する場合、/etc フォルダー内のファイルは、/usr フォルダー内の同じ名前のファイルよりも優先されます。

ルールファイルは YAML 形式で記述され、1 つ以上のアクションのリストが含まれます。アクションは、外部コマンドを実行する指示である場合があります。

フックに多くのアクションを指定すると、アクションは順番に実行され、次のアクションを開始する前に 1 つのアクションを終了します。

アクションが失敗を返した場合、以下のアクションはスキップされます。

run アクションは以下のパラメーターを取ります。

Expand

パラメーター

説明

以下を実行します。

実行するコマンドへの絶対パス。その後にフラグまたは引数が続きます (例: /usr/bin/nmcli connection reload)。コマンドはシェルで実行されないため、$PATH$HOME などのシェル変数や、|; などのチェーンコマンドは使用できません。必要に応じて、実行するコマンドとしてシェルを指定してシェルを起動できます (例: /usr/bin/bash -c 'echo $SHELL $HOME $USER')。

EnvVars

オプション: コマンドの環境変数として設定するキーと値のペアのリスト。

WorkDir

オプション: コマンドが実行されるディレクトリー。

Timeout

オプション: アクションが完了するまで許可される最大時間。期間は、単一の正の整数として指定し、その後に時間単位を指定します。sm、および h 単位は、それぞれ秒、分、および時間に対応しています。

if

オプション: アクションを実行するために true でなければならない条件のリスト。指定されていない場合、アクションは無条件に実行されます。

デフォルトでは、アクションはフックがトリガーされるたびに実行されます。ただし、afterUpdating フックの場合、If パラメーターを使用して、アクションを実行するために true でなければならない条件を追加できます。条件が満たされない場合、アクションはスキップされます。

たとえば、更新中に特定のファイルまたはディレクトリーが変更された場合にのみアクションを実行するには、次のパラメーターを受け取るパス条件を定義できます。

Expand

パラメーター

説明

Path

アクションを実行する条件として、更新中に変更される必要があるファイルまたはディレクトリーへの絶対パス。スラッシュ (/) を使用してパスを指定します。ディレクトリーへのパスの場合は、スラッシュ (/) で終了する必要があります。ファイルへのパスを指定する場合は、条件を満たすようにファイルを変更する必要があります。ディレクトリーへのパスを指定する場合は、そのディレクトリーまたはそのサブディレクトリー内のファイルが、その条件を満たすように変更されている必要があります。

Op

createdupdated、および removed などのファイル操作のリスト。変更の種類を、アクションの実行の条件として指定したパスに制限します。

afterUpdating フックでアクションのパス条件を指定する場合、コマンドの引数に含めることができ、変更されたファイルの絶対パスに置き換えられる次の変数があります。

Expand

変数

説明

${ Path }

パス条件で指定されたファイルまたはディレクトリーへの絶対パス。

${ Files }

更新時に変更され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ CreatedFiles }

更新時に作成され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ UpdatedFiles }

更新時に更新され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ RemovedFiles }

更新時に削除され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

Red Hat Edge Manager エージェントには、/usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml で定義された組み込みのルールセットが含まれています。特定のファイルが変更された場合、次のコマンドが実行されます。

Expand

File

コマンド

説明

/etc/systemd/system/

systemctl daemon-reload

systemd ユニットへの変更は、systemd デーモンに systemd マネージャー設定をリロードするよう通知することでアクティベートされます。これにより、すべてのジェネレーターが再実行され、すべてのユニットファイルがリロードされ、依存関係ツリー全体が再作成されます。

/etc/NetworkManager/system-connections/

nmcli conn reload

NetworkManager のシステム接続への変更は、NetworkManager デーモンにすべての接続をリロードするよう通知することでアクティベートされます。詳細は、関連情報 セクションを参照してください。

/etc/firewalld/

firewall-cmd --reload

firewalld の永続的な設定への変更は、firewalld に、新しいランタイム設定としてファイアウォールルールをリロードするよう通知することでアクティベートされます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る