2.6. PostgreSQL の要件
Red Hat Ansible Automation Platform 2.5 は PostgreSQL 15 を使用します。外部の (お客様がサポートする) データベースが ICU をサポートしている必要があります。PostgreSQL ユーザーパスワードは、データベースに保存する前に SCRAM-SHA-256 のセキュアハッシュアルゴリズムでハッシュ化されます。
Automation Controller インスタンスがデータベースにアクセスできるかどうかを確認するには、awx-manage check_db
コマンドを使用します。
- Automation Controller のデータはデータベースに保存されます。データベースストレージは、マネージドホストの数、ジョブ実行数、ファクトキャッシュに保存されているファクトの数、および個別ジョブのタスク数と共に増加します。たとえば、ホスト 250 台で 1 時間ごと (1 日に 24 回) に 20 個のタスクの Playbook を実行する場合は、毎週 800,000 件を超えるイベントがデータベースに保存されます。
- データベースに十分な容量が確保されていない場合は、以前のジョブ実行やファクトを定期的に消去する必要があります。詳細は、自動化実行の設定 ガイドの 管理ジョブ を参照してください。
PostgreSQL の設定
必要に応じて、PostgreSQL データベースを、Red Hat Ansible Automation Platform インストーラーで管理されていない個別ノードとして設定できます。Ansible Automation Platform インストーラーがデータベースサーバーを管理する場合は、大半のワークロードで一般的に推奨されているデフォルト値を使用してサーバーを設定します。データベースのパフォーマンスを向上させるのに使用できる設定の詳細は、自動化実行の設定 ガイドの Automation Controller の PostgreSQL データベースの設定とメンテナンス を参照してください。
関連情報
PostgreSQL サーバーのチューニングの詳細は、PostgreSQL のドキュメント を参照してください。
2.6.1. 外部 (お客様がサポートする) データベースの設定
- Ansible Automation Platform で外部データベースを使用する場合は、そのデータベースを作成および保守する必要があります。Ansible Automation Platform をアンインストールする際は、外部データベースを必ずクリアしてください。
- Red Hat Ansible Automation Platform 2.5 は PostgreSQL 15 を使用します。外部の (お客様がサポートする) データベースが ICU をサポートしている必要があります。
- 外部データベースの設定時には、外部データベースの対象範囲を確認する必要があります。詳細は、Red Hat Ansible Automation Platform データベースの対象範囲 を参照してください。
Red Hat Ansible Automation Platform 2.5 は PostgreSQL 15 を使用します。外部の (お客様がサポートする) データベースが ICU をサポートしている必要があります。Ansible Automation Platform のコンポーネント (Automation Controller、Event-Driven Ansible、Automation Hub、プラットフォームゲートウェイなど) で使用する外部 PostgreSQL 準拠データベースを設定するには、次の手順を使用します。
手順
スーパーユーザー権限で PostgreSQL 準拠のデータベースサーバーに接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:
# psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:
<hostname> のデフォルト値は hostname です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -h hostname --host=hostname
-h hostname --host=hostname
サーバーが実行されているマシンのホスト名を指定します。値がスラッシュで始まる場合、その値は UNIX ドメインソケットのディレクトリーとして使用されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -d dbname --dbname=dbname
-d dbname --dbname=dbname
接続するデータベースの名前を指定します。これは、コマンドラインで最初の非オプション引数として
dbname
を指定するのと同等です。dbname
には接続文字列を指定できます。その場合、接続文字列パラメーターにより、競合するコマンドラインオプションがオーバーライドされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -U username --username=username
-U username --username=username
-
デフォルトではなく、ユーザー
username
としてデータベースに接続します (そのための権限が必要です)。 -
ユーザーに割り当てられた
createDB
ロールまたはadministrator
ロールを使用して、ユーザー、データベース、およびパスワードを作成します。詳細は、Database Roles を参照してください。 -
インストールプログラムを実行します。PostgreSQL データベースを使用する場合、データベースは接続ユーザーが所有するものであり、
createDB
または管理者ロールがそのユーザーに割り当てられている必要があります。 - インベントリーファイルに指定した認証情報を使用して、作成されたデータベースに接続できることを確認します。
-
ユーザーの権限を確認します。ユーザーには
createDB
または管理者ロールが必要です。 各コンポーネントの PostgreSQL ユーザーとデータベースを作成したら、[all:vars] グループのインベントリーファイルにデータベース認証情報とホストの詳細を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Automation controller Platform gateway Automation hub Event-Driven Ansible
# Automation controller pg_host=data.example.com pg_database=<database name> pg_port=<port_number> pg_username=<set your own> pg_password=<set your own> # Platform gateway automationgateway_pg_host=aap.example.org automationgateway_pg_database=<set your own> automationgateway_pg_port=<port_number> automationgateway_pg_username=<set your own> automationgateway_pg_password=<set your own> # Automation hub automationhub_pg_host=data.example.com automationhub_pg_database=<database_name> automationhub_pg_port=<port_number> automationhub_pg_username=<username> automationhub_pg_password=<password> # Event-Driven Ansible automationedacontroller_pg_host=data.example.com automationedacontroller_pg_database=<database_name> automationedacontroller_pg_port=<port_number> automationedacontroller_pg_username=<username> automationedacontroller_pg_password=<password>
2.6.1.1. オプション: 相互 TLS (mTLS) 認証の有効化
mTLS 認証はデフォルトで無効になっています。各コンポーネントのデータベースを mTLS 認証で設定するには、[all:vars]
グループのインベントリーファイルに次の変数を追加し、各コンポーネントに異なる TLS 証明書とキーがあることを確認します。
Automation controller Platform gateway Automation hub Event-Driven Ansible
# Automation controller
pgclient_sslcert=/path/to/awx.cert
pgclient_sslkey=/path/to/awx.key
pg_sslmode=verify-full or verify-ca
# Platform gateway
automationgateway_pgclient_sslcert=/path/to/gateway.cert
automationgateway_pgclient_sslkey=/path/to/gateway.key
automationgateway_pg_sslmode=verify-full or verify-ca
# Automation hub
automationhub_pgclient_sslcert=/path/to/pulp.cert
automationhub_pgclient_sslkey=/path/to/pulp.key
automationhub_pg_sslmode=verify-full or verify-ca
# Event-Driven Ansible
automationedacontroller_pgclient_sslcert=/path/to/eda.cert
automationedacontroller_pgclient_sslkey=/path/to/eda.key
automationedacontroller_pg_sslmode=verify-full or verify-ca
2.6.1.2. オプション: カスタム TLS 証明書の使用
デフォルトでは、インストールプログラムはすべての Ansible Automation Platform サービスに対して自己署名 TLS 証明書と鍵を生成します。
これらを独自のカスタム証明書と鍵に置き換える場合は、次のインベントリーファイル変数を設定します。
aap_ca_cert_file=<path_to_ca_tls_certificate> aap_ca_key_file=<path_to_ca_tls_key>
aap_ca_cert_file=<path_to_ca_tls_certificate>
aap_ca_key_file=<path_to_ca_tls_key>
いずれかの証明書がカスタム認証局 (CA) によって署名されている場合は、custom_ca_cert
インベントリーファイル変数を使用して認証局の証明書を指定する必要があります。
custom_ca_cert=<path_to_custom_ca_certificate>
custom_ca_cert=<path_to_custom_ca_certificate>
複数のカスタム CA 証明書がある場合は、それらを 1 つのファイルに結合し、結合した証明書を custom_ca_cert
インベントリーファイル変数で参照します。
2.6.2. Automation Hub PostgreSQL データベースの hstore 拡張機能の有効化
Ansible Automation Platform 2.5 で追加されたデータベース移行スクリプトは、hstore
フィールドを使用して情報を保存します。そのため、Automation Hub PostgreSQL データベースで hstore
拡張機能を有効にする必要があります。
Ansible Automation Platform インストーラーとマネージド PostgreSQL サーバーを使用する場合、このプロセスは自動的に行われます。
PostgreSQL データベースが外部にある場合は、インストール前に、Automation Hub PostgreSQL データベースで hstore
拡張機能を手動で有効にする必要があります。
インストール前に hstore
拡張機能が有効になっていないと、データベースの移行中にエラーが発生します。
手順
拡張機能が PostgreSQL サーバー (Automation Hub データベース) で利用できるかどうかを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
$ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
<automation hub database>
のデフォルト値はautomationhub
です。hstore
が利用できる場合の出力例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)
hstore
が利用できない場合の出力例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)
name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)
RHEL ベースのサーバーでは、
hstore
拡張機能はpostgresql-contrib
RPM パッケージに含まれていますが、PostgreSQL サーバー RPM パッケージのインストール時に自動的にインストールされません。RPM パッケージをインストールするには、次のコマンドを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf install postgresql-contrib
dnf install postgresql-contrib
次のコマンドを使用して、
hstore
PostgreSQL 拡張機能を Automation Hub データベースにロードします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
$ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
次の出力では、使用されている
hstore
拡張機能がinstalled_version
フィールドに表示されています。これはhstore
が有効になっていることを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)
2.6.3. Ansible Automation Platform PostgreSQL データベースのストレージパフォーマンスのベンチマーク
Flexible I/O Tester (FIO) ツールを使用して、Ansible Automation Platform PostgreSQL データベースの最小要件が満たされているかどうかを確認します。FIO は、ストレージシステムの読み取りおよび書き込み IOPS パフォーマンスをベンチマークするために使用されるツールです。
前提条件
Flexible I/O Tester (
fio
) ストレージパフォーマンスベンチマークツールがインストールされている。fio
をインストールするには、root ユーザーとして次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install fio
# yum -y install fio
fio
テストデータログファイルを保存するのに十分なディスク容量がある。この手順に示す例では、
/tmp
ディレクトリーに少なくとも 60 GB のディスク領域が必要です。-
numjobs
は、コマンドによって実行されるジョブの数を設定します。 -
size=10G
は、各ジョブによって生成されるファイルサイズを設定します。
-
-
size
パラメーターの値を調整済みである。この値を調整すると、テストデータの量が減ります。
手順
ランダムな書き込みテストを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow fio --name=write_iops --directory=/tmp --numjobs=3 --size=10G \ --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \ --verify=0 --bs=4K --iodepth=64 --rw=randwrite \ --group_reporting=1 > /tmp/fio_benchmark_write_iops.log \ 2>> /tmp/fio_write_iops_error.log
$ fio --name=write_iops --directory=/tmp --numjobs=3 --size=10G \ --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \ --verify=0 --bs=4K --iodepth=64 --rw=randwrite \ --group_reporting=1 > /tmp/fio_benchmark_write_iops.log \ 2>> /tmp/fio_write_iops_error.log
ランダムな読み取りテストを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow fio --name=read_iops --directory=/tmp \ --numjobs=3 --size=10G --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 --bs=4K --iodepth=64 --rw=randread \ --group_reporting=1 > /tmp/fio_benchmark_read_iops.log \ 2>> /tmp/fio_read_iops_error.log
$ fio --name=read_iops --directory=/tmp \ --numjobs=3 --size=10G --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 --bs=4K --iodepth=64 --rw=randread \ --group_reporting=1 > /tmp/fio_benchmark_read_iops.log \ 2>> /tmp/fio_read_iops_error.log
結果を確認します。
ベンチマークコマンドによって書き込まれたログファイルで、
iops
で始まる行を検索します。この行は、テストの最小値、最大値、および平均値を表示します。次の例は、ランダム読み取りテストのログファイル内の行を表示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /tmp/fio_benchmark_read_iops.log read_iops: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64 […] iops : min=50879, max=61603, avg=56221.33, stdev=679.97, samples=360 […]
$ cat /tmp/fio_benchmark_read_iops.log read_iops: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64 […] iops : min=50879, max=61603, avg=56221.33, stdev=679.97, samples=360 […]
注記上記は、お使いのシステムで最適なパフォーマンスを評価するのに役立つベースラインです。システムは変更される可能性があり、テスト時におけるシステム、ストレージ、またはネットワークの他の状態によってパフォーマンスが変わる場合があります。独自のビジネス要件、アプリケーションのワークロード、および新しい要求に応じて、ログファイルを確認、監視、再検討する必要があります。