TPA hooks

TPAは、ユーザーの介入なしで完全に機能するクラスターをセットアップでき、カスタムリポジトリとパッケージ、カスタムPostgres構成( pg_hba.confとpostgresql.confの両方)など、さまざまな settings to control your cluster configuration を既に提供しています。

使用可能な構成設定では満たされない特定のニーズに対応するフックスクリプトを作成できます。フックを使用すると、展開中に任意の Ansible タスクを実行できます。

フックは TPA の究極の拡張メカニズムであり、できることに制限はありません。メンテナンスの負担が増えることに注意してください。 TPA開発者はフックコードを把握しておらず、予想される段階でフックを呼び出す以外にリリース間の互換性を保証できません。

まとめ

クラスターディレクトリのhooks サブディレクトリの下に特定の名前でファイルを作成すると、以下で説明するように、TPAはそれらを展開プロセスのさまざまな段階で呼び出します。

$ mkdir ~/clusters/speedy/hooks
$ cat > ~/clusters/speedy/hooks/pre-deploy.yml
- --

-  debug: msg="hello world!"

フックスクリプトは include_tasks で呼び出されるため、Ansibleタスクのリストを含むYAMLファイルであると想定されます(playのリストを含むPlaybookではありません)。以下で特に記載されていない限り、フックは展開内のすべてのホストに対して無条件に実行されます。

汎用フック

事前展開

TPAは、Pythonをブートストラップした直後に、リポジトリの構成やパッケージのインストールなどの前に hooks/pre-deploy.yml を呼び出します。これは、独自のコードを実行できる最も早い段階です。

このフックを使用して、 apt_repositories または yum_repositories でできることを超えて、カスタムリポジトリ構成を設定できます。

ポストレポ

TPAは、パッケージリポジトリの構成後にhooks/post-repo.yml を呼び出します。パッケージのインストールを開始する前に、これを使用してリポジトリー構成を修正できます。

pre-initdb

TPAはhooks/pre-initdb.yml が存在しない場合に run initdb to create PGDATA するかどうかを決定する前に呼び出します。通常、このフックを使用する必要はありません(ただし、これを使用して自分でPGDATA を作成すると、TPAはinitdb をスキップします)。

postgres-config

TPAは、 pg_hba.confとconf.d内のファイルを含むPostgres構成ファイルを生成した後、サーバーが起動する前に呼び出します。

たとえば、このフックを使用して、conf.d の下に追加の構成ファイルを作成できます。

postgres-config-final

TPAは、Postgresを起動し、ユーザー、データベース、および拡張機能を作成した後、 hooks/postgres-config-final.yml を呼び出します。このフックを使用して、 SQLコマンドを実行できます。たとえば、カスタム拡張機能の構成を実行したり、データベースオブジェクトを作成したりできます。

harp-config

TPAは、 HARP構成ファイルを生成した後、 HARPサービスが開始される前に、 hooks/harp-config.yml を呼び出します。

たとえば、このフックを使用して、TPAの組み込みインターフェイスで提供されないHARPプロキシをカスタマイズできます。

このフックは、 BDRノードを含むHARPパッケージをインストールするノードで実行されることに注意してください。

展開後

TPAは、デプロイメントの最後にhooks/post-deploy.yml を呼び出します。

この段階の後、やりたいことをやり続けることができます。

このフックを使用して、TPAの展開中に生成または変更された構成ファイルを変更すると、次のtpaexec deploy によって変更が上書きされるリスクがあります(TPAはフックが何をしたかわからないため)。

BDR3フック

これらのフックは、BDRv3展開に固有です。

bdr-pre-node-creation

TPAは、インスタンスにBDRノードを初めて作成する前に、すべてのインスタンスでhooks/bdr-pre-node-creation.yml を呼び出します。必要なBDRノードがすべて存在する場合、フックは呼び出されません。

bdr-post-group-creation

first_bdr_primary インスタンスでBDRノードグループを作成した後、TPAはすべてのインスタンスでhooks/bdr-post-group-creation.yml を呼び出します。必要なBDRグループが既に存在する場合、フックは呼び出されません。

bdr-pre-group-join

TPAは、複製セットを作成、変更、または削除し、必要なサブスクリプションを構成した後、ノードに参加する前に、すべてのインスタンスでhooks/bdr-pre-group-join.yml を呼び出します。

このフックを使用して、 SQLコマンドを実行し、ノード参加を開始する前に必要になる可能性のあるレプリケーションセットの構成とサブスクリプションに対して他の調整を実行できます。

たとえば、一般的にBDRレプリケーションセットを調整して、新しいテーブルを自動的に追加し、 DDLフィルターを作成できます。

その他のフック

postgres-pre-update、postgres-post-update

update-postgres コマンドは、パッケージをインストールする前に特定のインスタンスでhooks/postgres-pre-update.yml

を呼び出し、パッケージのインストールが完了した後にhooks/postgres-post-update.yml を呼び出します。両方のフックは、更新されるインスタンスでのみ呼び出されます。

これらのフックを使用して、環境に合わせて更新プロセスをカスタマイズできます(他のパッケージをインストールし、TPAが管理しないサービスを停止および再起動します)。

新しいフック

EDBは、必要に応じてTPAに新しいフックを追加します。あなたのユースケースが既存のフックでカバーされていない場合は、お問い合わせください。