1.5.10. デバイスのライフサイクルフック
テクノロジープレビュー: Red Hat Edge Manager エージェントは、デバイスライフサイクルフックを使用して、デバイスライフサイクルの特定のポイントでユーザー定義のコマンドを実行できます。たとえば、アプリケーションデータのバックアップを作成するオペレーティングシステムイメージにシェルスクリプトを追加できます。次に、エージェントがオペレーティングシステムの更新を開始する前に、スクリプトが実行され、正常に完了するように指定できます。
別の例として、特定のアプリケーションやシステムサービスは、ファイルがディスク上で変更されても、設定ファイルを自動的にリロードしません。エージェントが更新プロセスを完了した後に呼び出される別のフックとしてコマンドを指定することで、設定ファイルを手動でリロードできます。
次のデバイスのライフサイクルフックがサポートされています。
| ライフサイクルフック | 説明 |
|
| エージェントが更新の準備を完了した後、ただし、オペレーティングシステムを変更する前に、フックが呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルします。 |
|
| フックは、エージェントがディスクに更新を書き込んだ後に呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
|
| フックは、システムが再起動する前に呼び出されます。エージェントは、アクションの完了またはタイムアウトまで再起動をブロックします。このフックの何らかのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
|
| フックは、エージェントが再起動後に最初に起動すると呼び出されます。このフックの何らかのアクションが失敗を返した場合、エージェントは失敗を報告しますが、起動を継続します。 |
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 アクションは以下のパラメーターを取ります。
| パラメーター | 説明 |
|
|
実行するコマンドへの絶対パス。その後にフラグまたは引数が続きます (例: |
|
| オプション: コマンドの環境変数として設定するキーと値のペアのリスト。 |
|
| オプション: コマンドが実行されるディレクトリー。 |
|
|
オプション: アクションが完了するまで許可される最大時間。期間は、単一の正の整数として指定し、その後に時間単位を指定します。 |
|
| オプション: アクションを実行するために true でなければならない条件のリスト。指定されていない場合、アクションは無条件に実行されます。 |
デフォルトでは、アクションはフックがトリガーされるたびに実行されます。ただし、afterUpdating フックの場合、If パラメーターを使用して、アクションを実行するために true でなければならない条件を追加できます。条件が満たされない場合、アクションはスキップされます。
たとえば、更新中に特定のファイルまたはディレクトリーが変更された場合にのみアクションを実行するには、次のパラメーターを受け取るパス条件を定義できます。
| パラメーター | 説明 |
|
|
アクションを実行する条件として、更新中に変更される必要があるファイルまたはディレクトリーへの絶対パス。スラッシュ ( |
|
|
|
afterUpdating フックでアクションのパス条件を指定する場合、コマンドの引数に含めることができ、変更されたファイルの絶対パスに置き換えられる次の変数があります。
| 変数 | 説明 |
|
| パス条件で指定されたファイルまたはディレクトリーへの絶対パス。 |
|
| 更新時に変更され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
|
| 更新時に作成され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
|
| 更新時に更新され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
|
| 更新時に削除され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
Red Hat Edge Manager エージェントには、/usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml で定義された組み込みのルールセットが含まれています。特定のファイルが変更された場合、次のコマンドが実行されます。
| File | コマンド | 説明 |
|
|
|
|
|
|
|
|
|
|
|
|