Trusted Postgres Architect 23.38.0 release notes

Trusted Postgres Architect 23.38.0 release notes#

リリース日2025年6月9日

Trusted Postgres Architect 23.38.0の新機能、機能強化、バグ修正、およびその他の変更には次のものが含まれます。

ハイライト#

  • ExpandedとEssentialアーキテクチャの両方でのEDB Postgres分散バージョン6の展開のサポート

  • CVE-2025-2291の緩和を含むPgBouncer実装の改善

  • PEM 10.1のサポート

機能強化#

Description

Addresses

PGD6アーキテクチャのサポート。 TPAは、 PGD6に基づいてPGD-XおよびPGD-Sアーキテクチャを使用してクラスターを構成および展開できるようになりました PGD-SアーキテクチャはPGD Essentialを実装し、 PGD-XアーキテクチャはPGD Expandedを実装します。これらのアーキテクチャには、合理的なデフォルト構成があり、さまざまな構成オプションを受け入れて動作をカスタマイズします。 PGD 6展開にはpgd-proxyが含まれません。代わりに、PGDのビルトイン接続マネージャーが構成されます。新しいアーキテクチャのテストサポートが追加されます。

クラスター内に両方が存在する場合、 Barmanを監視するようにPEMを構成します。クラスターがPEMを有効にして`--enable-pem`オプションを使用して構成され、 Barmanノードを含む場合、次のアクションが自動的に実行されるようになりました。 - `enable_pg_backup_api`は`config.yml`で`true`に設定されます - `pem-agent`ロールはBarmanノードに割り当てられます - BarmanエンドポイントローカルPEMエージェントに登録されています。これらの変更により、セットアップが簡素化され、PEMとBarman間のシームレスな統合が保証されます。

AWSでのRocky Linux 9のサポートを追加しました。 TPAは、 `aws`プラットフォームでRocky Linux 9.5を使用したクラスターの構成をサポートするようになりました。バージョンが指定されない場合、これはAWSのRocky Linuxのデフォルトバージョンになりました。

SLES 15でpg_backup_apiのサポートを追加しました。 PEMモニタリングが有効で、 Barmanノードがクラスター内に存在する場合、TPAはpg_backup_apiがSUSE Linux Enterprise Server 15 SLES 15で構成されます。

の変更#

Description

Addresses

PEM 10.1以降では、`PEM_DB_PORT`を文字列として扱います。 PEM 10.1では、Webアプリケーションからバックエンドサーバーまでのマルチホスト接続文字列のサポートを追加します。この変更をサポートするために、PEMの`config_setup.py`ファイルの`PEM_DB_PORT`パラメーターが整数ではなく文字列になりました。 TPAはHA PEM構成の展開をまだサポートしていませんが、PEMバージョンが10.1以上の場合、TPAはこのパラメーターを文字列として正しく設定するようになりました。

`repo`がタスクから除外される場合、TPAはリポジトリチェックをスキップするようになりました。 `repo`タグは除外できますが、以前は`sys/repositories`ロールの下のタスクのみをスキップしていました。また、どのリポジトリを使用するかをチェックする初期化タスクをスキップし、それらにアクセスするための資格情報が提供されていることを確認します。

`postgres_package_version`の動作を改善しました。 `postgres_package_version`設定により、TPAはEDB Postgres Advanced ServerまたはEDB Postgres Extended ServerをインストールしているDebianまたはUbuntuシステムに、さまざまなpostgres関連コンポーネントの選択したバージョンをインストールします。これにより、新しいパッケージバージョンがリポジトリで表示される場合の依存関係解決の問題を回避します。

新しいタスクセレクター`create_postgres_system_user`および`create_pgd_proxy_system_user`を追加しました。 postgres_userおよびpgd_proxy_userオペレーティングシステムユーザーをスキップできる新しいタスクセレクターを追加しました。これにより、クラスターは、NISなどの集中ユーザー管理によって作成されたリモートユーザーを使用できます。これはconfig.ymlで設定できます。cluster_vars: excluded_tasks: - create_postgres_system_user - create_pgd_proxy_system_user

48601,44388

TPAは、スイッチオーバー中にPgBouncerをM1 repmgrクラスターの新しいプライマリにリダイレクトします。 TPAは、 `repmgr_redirect_pgbouncer`がtrueに設定されているrepmgr + PgBouncerクラスターで`switchover`コマンドを使用した後、PgBouncerインスタンスが新しいプライマリノードにリダイレクトされるようになりました。 `tpaexec switchover`コマンドは、PgBouncerインスタンスが新しいプライマリノードに接続するようになりました。最初のスイッチオーバーが実行されて最初のプライマリノードに戻った後、新しい`revert_redirect`変数を追加変数として設定することもできます。

カスタムリポジトリ定義で`key_id`/`gpgkey`をオプショナルにしました。 `key_id`および`gpgkey`パラメーターaptおよびyumカスタムリポジトリー定義の場合、基になるモジュールでは必要ありません。インストール前にこれを提供するのが簡単ではないユースケースがあります。この変更により、TPAは、カスタムリポジトリ定義でそれらを提供することを必須にしません。

PGD CLI 5.7.0+の`tpaexec test`の`verify-settings`チェックを修正しました。 PGD CLIコマンド `pgd verify-settings`の出力は、 PGD 5.7.0で変更されました。 PGD CLIの5.7.0より上のバージョンを使用する場合、TPAは出力を正しく解析するようになりました。 verify-settingsは、将来のPGDリリースで他のコマンドとともに非推奨になることに注意してください。これらのコマンドは、非推奨が発生するまで、新しいコマンドを呼び出すラッパーになります。

`barman_role`に権限を付与するためのロジックが改善されました。 TPAは`postgresql_privs`モジュールを使用して`barman_role`に付与を適用するように、必要な場合にのみ変更が適用されます。さらに、 PGDクラスターでは、TPAは2番目の展開で`bdr_database`を使用するため、 DDLはPGDによってクラスター全体でレプリケートされます。

config.ymlの`cluster_vars`変数テンプレートを文書化しました。 `config.yml`で不適切にテンプレート化された場合に定義されていないインベントリ変数に関連する予期しない動作による混乱を避けるために、`cluster_vars`で定義された変数の正しいテンプレート手順を作業例で説明するドキュメントを追加しました。

48797

TPAは、configure中に無効なCIDRが`--network`フラグに渡された場合、ArchitectureErrorを送出するようになりました。デフォルトでは、Python標準ライブラリ ipaddress`パッケージは、 CIDRの'厳密な'解釈を強制します。これにより、使用されるIPは範囲のネットワークアドレスである必要があります。以前は、ホストビットを含む--network`フラグに渡されるIPは、ValueErrorが発生したためスタックトレースをダンプしていました。その例外がキャッチされ、 ArchitectureErrorが発生して、 `--network`パラメーターに関する明確なメッセージをユーザーに表示します。

EFM application.nameプロパティのデフォルト値を追加しました。ノードにEFM `application.name`プロパティが設定されていない場合、TPAはデフォルトとしてPostgres `cluster_name`プロパティを使用します。 EFMは、スイッチオーバーを実行するとき、または新しいスタンバイデータベースを構築するときにこの値を使用します。

TPAは、SUSEでEDBリポジトリセットアップスクリプトを使用するようになりました。以前は、TPAは繰り返しの展開で機能しないため、SUSEでEDBリポジトリセットアップスクリプトを使用しませんでした。スクリプトがインストールしようとしているリポジトリが既に存在し、一意の名前が必要なため、Zypperは発生します。リポジトリが既にインストールされている場合、リポジトリのセットアップスクリプトタスクがスキップされるようになったため、この問題は発生しません。

バグ修正#

Description

Addresses

TPAは、専用のデータベースに`pgbouncer_get_auth()`ファンクションを作成します。 `pgbouncer_get_auth()`ファンクションは`pg_catalog`スキーマで作成され、`pgbouncer_auth_user`に実行許可されています。このファンクションはすべてのデータベースで作成されましたが、これはPgBouncerには必要ありませんでした。このファンクションが`pg_catalog`スキーマで作成された場合、`pg_dump`によって作成されたダンプに含まれないため、`pgd node upgrade`プロセス中に障害が発生する場合があります。後のタスクは、このファンクションで`GRANT`を実行しようとしますが、ファンクションは最初にダンプされていないため復元されないため、失敗します。現在、このファンクションは単一のデータベースでのみ作成され、`config.yml`の`pgbouncer_auth_database`変数の下で名前付けられます。これが含まれない場合はデフォルトの`pgbouncer_auth_database`になります。 `pgbouncer`ロールを持つ少なくとも1つのインスタンスがクラスターに含まれる場合にのみ作成されます。将来のTPAリリースはそのスキーマからファンクションを削除する可能性があるため、データベースが`pg_catalog`スキーマでこのファンクションを定義している場合、展開およびアップグレード中に警告も発行されます。 PgBouncer `auth_query`が使用する`pgbouncer_get_auth()`ファンクション自分自身が更新されて、CVE-2025-2291に対処しました。この脆弱性により、有効期限が切れたパスワードを使用した認証が可能になりましたが、a_queryメカニズムは、ユーザーパスワードのPostgreSQLで設定された`VALID UNTIL`属性を考慮していませんでした。

42911, 45068

`--check`オプションを使用すると、一部のタスクが誤ってスキップされる問題を修正しました。 HARPのないPGDクラスターでは、 `Read current configuration file if exists`タスクをチェックモードで実行して、次のHARPチェックタスクを正しくスキップするために利用できる情報があることを確認する必要があります。ただし、デフォルトでは、Ansibleはチェックモード中に`shell`モジュールを使用してタスクをスキップします。これは、このタスクが実行されず、後続のタスクで擬似障害が発生することを意味します。このタスクを実行する必要があることをAnsibleに通知します。

`cluster_vars['patroni_conf_settings']['bootstrap']['dcs']`を介して`ignore_slots`に追加された設定が最終的な構成にマージされないバグを修正しました。

レプリカロールを持つBDRノードのRAFTチェックがアップグレード中にスキップされない問題を修正しました。 `subscriber-only`ノードの物理レプリケーションは、フェールオーバーマネージャーとして`repmgr`をインストールし、`subscriber-only`ノードを`primary`として指定し、別のBDRデータノードを`backup`としてリストすることにより、`PGD`クラスターで実現できます。このバックアップノードには、`replica`ロールが付与されます。 TPAはBDRデータノードでRAFTが有効になっていることを想定しているため、この構成ではPGDアップグレードプロセスが失敗しますが、物理レプリカBDRデータノード `replica`と`bdr`ロールの両方はデザインによってそうではありません。修正として、アップグレードプロセスの特定のBDR固有のタスクは、`replica`ロールを持つノードをスキップし、アップグレードを成功させます。

46186