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構成ファイルを生成した後、サーバーが起動する前に、 hooks/postgres-config.yml を呼び出します。

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

postgres-config-final

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

harp-config

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

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

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

デプロイ後

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

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

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

PGDフック

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

bdr-pre-node-creation

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

bdr-post-group-creation

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

bdr-pre-group-join

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

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

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

その他のフック

postgres-pre-update、postgres-post-update

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

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

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

新しいフック

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