4.5. (オプション) RHEL マシンで Ansible タスクを実行するためのフックの追加
OpenShift Container Platform の更新時に フック を使用し、RHEL コンピュートマシンで Ansible タスクを実行できます。
4.5.1. アップグレード用の Ansible Hook について
OpenShift Container Platform の更新時に フック を使用し、特定操作の実行中に Red Hat Enterprise Linux (RHEL) ノードでカスタムタスクを実行できます。フックを使用して、特定の更新タスクの前後に実行するタスクを定義するファイルを指定できます。OpenShift Container Platform クラスターで RHEL コンピュートノードを更新する際に、フックを使用してカスタムインフラストラクチャーを検証したり、変更したりすることができます。
フックが失敗すると操作も失敗するため、フックはべき等性があるか、または複数回実行でき、同じ結果を出せるように設計する必要があります。
フックには以下のような重要な制限があります。まず、フックには定義された、 またはバージョン付けされたインターフェースがありません。フックは内部の openshift-ansible
変数を使用できますが、これらの変数は今後の OpenShift Container Platform のリリースで変更されるか、または削除される予定です。次に、フックにはエラー処理機能がないため、フックにエラーが生じると更新プロセスが中止されます。エラーの発生時には、まず問題に対応してからアップグレードを再び開始する必要があります。
4.5.2. Ansible インベントリーファイルでのフックを使用する設定
Red Hat Enterprise Linux (RHEL) コンピュートマシン (ワーカーマシンとしても知られている) の更新時に使用するフックを、all:vars
セクションの下にある hosts
インベントリーファイルで定義します。
前提条件
-
RHEL コンピュートマシンクラスターの追加に使用したマシンへのアクセスがあること。RHEL マシンを定義する
hosts
Ansible インベントリーファイルにアクセスできる必要があります。
手順
フックの設計後に、フック用に Ansible タスクを定義する YAML ファイルを作成します。このファイルは、以下に示すように一連のタスクで構成される必要があり、Playbook にすることはできません。
--- # Trivial example forcing an operator to acknowledge the start of an upgrade # file=/home/user/openshift-ansible/hooks/pre_compute.yml - name: note the start of a compute machine update debug: msg: "Compute machine upgrade of {{ inventory_hostname }} is about to start" - name: require the user agree to start an upgrade pause: prompt: "Press Enter to start the compute machine update"
hosts
Ansible インベントリーファイルを変更してフックファイルを指定します。フックファイルは、以下に示すように[all:vars]
セクションのパラメーター値として指定されます。インベントリーファイルのフック定義の例
[all:vars] openshift_node_pre_upgrade_hook=/home/user/openshift-ansible/hooks/pre_node.yml openshift_node_post_upgrade_hook=/home/user/openshift-ansible/hooks/post_node.yml
フックへのパスでの曖昧さを避けるために、それらの定義では相対パスの代わりに絶対パスを使用します。
4.5.3. RHEL コンピュートマシンで利用できるフック
Red Hat Enterprise Linux (RHEL) コンピュートマシンを OpenShift Container Platform クラスターで更新する際に、以下のフックを使用できます。
フック名 | 説明 |
---|---|
|
|
|
|
|
|
|
|