galaxyproject.postgresql
PostgreSQL
PostgreSQLサーバーをインストールおよび管理するための[Ansible][ansible]役割です。この役割はDebianおよびRedHatベースのシステムで動作し、[PostgreSQL Continuous Archiving and Point-in-Time Recovery][postgresql_pitr]用のバックアップスクリプトを提供します。PostgreSQLのユーザー、ロール、グループ、データベースなどを作成または管理することはありません。それらについては、[galaxyproject.postgresql_objects][postgresql_objects]を参照してください。
RedHatベースのプラットフォームでは、[PostgreSQL Global Development Group (PGDG)パッケージ][pgdg_yum]がインストールされます。Debianベースのプラットフォームでは、ディストリビューションのパッケージ(APTから)または[PGDGパッケージ][pgdg_apt]のいずれかを選択できます。
再起動が必要な変更は、手動でPostgreSQLを再起動しない限り適用されません。 この役割は、設定変更で再読み込みのみで更新できるものについてはサーバーを再読み込みしますが、完全な再起動が必要なオプションはサーバーを再起動しません。
要件
この役割はAnsible 2.4以上が必要です。
役割変数
すべての変数はオプションです
postgresql_user_name:PostgreSQLで使用するシステムユーザー名(デフォルト:postgres)。postgresql_version:インストールするPostgreSQLのバージョン。Debianベースのプラットフォームでは、デフォルトはpostgresqlメタパッケージが指しているバージョンです。RedHatベースのプラットフォームでは、デフォルトは10です。postgresql_flavor:Debianベースのプラットフォームでは、pgdgのPostgreSQLパッケージまたはディストリビューションのAPTリポジトリのいずれを使用するかを指定します。可能な値:apt、pgdg(デフォルト:apt)。postgresql_conf:postgresql.confオプション(キー)と値のハッシュ(辞書)のリスト。これらのオプションは、postgresql.confに直接追加されるわけではなく、設定ディレクトリ内にconf.dサブディレクトリを作成し、そのディレクトリへのインクルードステートメントをpostgresql.confに追加します。postgresql_confで設定されたオプションは、conf.d/25ansible_postgresql.confに設定されます。レガシーの理由から、これは単一のハッシュでも可能ですが、リスト構文が好まれます。YAML解析のため、
postgresql_confで値を定義する際には、適切に構成ファイルに書かれるよう注意してください。例えば:postgresql_conf: - max_connections: 250 - archive_mode: "off" - work_mem: "'8MB'"これは、
25ansible_postgresql.confでは次のようになります:max_connections = 250 archive_mode = off work_mem: '8MB'postgresql_pg_hba_conf:pg_hba.confに追加する行のリストpostgresql_pg_hba_local_postgres_user:falseに設定すると、DebianベースのPostgreSQLインストールで事前設定されたpostgresユーザーのエントリーがpg_hba.confから削除されます。何をしているか分からない限り、これを行うのはお勧めできません。postgresql_pg_hba_local_socket:falseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.confのlocalエントリーが削除されます。postgresql_pg_hba_local_ipv4:falseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.confのhost ... 127.0.0.1/32エントリーが削除されます。postgresql_pg_hba_local_ipv6:falseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.confのhost ... ::1/128エントリーが削除されます。postgresql_pgdata:パッケージのデフォルトから$PGDATAディレクトリを変更した場合のみ設定します。これはPostgreSQLが実際に異なるディレクトリを使用するようには設定されませんので、自分で行う必要があります。ただ、この役割は適切にディレクトリを指定することを可能にします。postgresql_conf_dir:postgresql_pgdataと同様、設定ディレクトリについての設定です。postgresql_install_psycopg2:Ansibleが使用しているリモート側のPythonインタプリタにpsycopg2を提供する正しいパッケージをインストールしようとします。これにより、psycopg2に依存するpostgresql_*Ansibleモジュールを使用することができます(おそらく[galaxyproject.postgresql_objects][postgresql_objects]を介して)。デフォルトはtrueです。
バックアップ
この役割は、PostgreSQLの[PITR][postgresql_pitr]バックアップを維持するための設定とスクリプトをデプロイおよびスケジュールできます。
構成された間隔でフルバックアップが作成され、フルバックアップの間のWALセグメントはPostgreSQLサーバーの指示に従って{{ postgresql_backup_dir }}/wal_archive/にアーカイブされます。 最も古いバックアップが削除されると、このディレクトリからWALセグメントは削除されます。この処理は、postgresql_backup_dirがローカルにマウントされている場合、バックアップスクリプトによって自動的に行われます。
postgresql_backup_dirがリモートrsyncパス(":"を含む)である場合、バックアップスクリプトはバックアップを維持します(古いフルバックアップを削除することを含む)が、wal_archive/ディレクトリを自動的に除去することはできません。バックアップサーバーにPostgreSQLクライアントパッケージから標準のpg_archivecleanupユーティリティをインストールできる場合は、この役割のバックアップスクリプトをバックアップサーバーで--clean-archiveオプションを使って直接実行してください。
postgresql_backup_dir:設定すると、PITRバックアップが有効になります。データベースのバックアップ先ディレクトリを指定してください(これはrsyncがサポートする任意の形式で、例:user@host:/path)。最も最近のバックアップはcurrentというサブディレクトリに格納されます。postgresql_backup_local_dir:バックアップスクリプトが配置されるPostgreSQLサーバー上のファイルシステムパスです。postgresql_backup_[hour|minute]:フルバックアップを実行するためのcronジョブが実行される時間を制御します。デフォルトは午前1時です。postgresql_backup_[day|month|weekday]:フルバックアップが実行される時間の追加cron制御(デフォルト:*)。postgresql_backup_post_command:スケジュールされたバックアップが成功裏に完了した後に実行する任意のコマンドです。
バックアップに関する追加オプションはdefaults fileにあります。
依存関係
バックアップ機能にはPython 2.7または3.5以上、psycopg2、およびrsyncが必要です。Enterprise LinuxにPGDGバージョンのPostgreSQLをインストールする場合、対応するpsycopg2パッケージがPGDG yumリポジトリから入手できます。
サンプルプレイブック
標準インストール:OSのデフォルトpostgresql.conf、pg_hba.conf、およびデフォルトバージョン:
---
- hosts: dbservers
roles:
- galaxyproject.postgresql
Debianベースのホストでpgdgパッケージを使用:
---
- hosts: dbservers
vars:
postgresql_flavor: pgdg
roles:
- galaxyproject.postgresql
PostgreSQL 9.5パッケージを使用し、いくつかのpostgresql.confオプションおよびpg_hba.confエントリーを設定:
---
- hosts: dbservers
vars:
postgresql_version: 9.5
postgresql_conf:
- listen_addresses: "''" # ネットワークリスニングを無効にする(ユニックスソケットのみでリッスン)
- max_connections: 50 # 接続制限を減少させる
postgresql_pg_hba_conf:
- host all all 10.0.0.0/8 md5
roles:
- galaxyproject.postgresql
バックアップを/archiveに有効化:
- hosts: all
vars:
postgresql_backup_dir: /archive
roles:
- galaxyproject.postgresql
リモートサーバーにバックアップを/archiveに有効化:
- hosts: dbservers
vars:
postgresql_backup_dir: backup.example.org:/archive
roles:
- galaxyproject.postgresql
- hosts: backupservers
tasks:
- name: PostgreSQLスクリプトをインストール
ansible.builtin.apt:
name: postgresql-common
- name: バックアップスクリプトをコピー
ansible.builtin.copy:
src: roles/galaxyproject.postgresql/files/backup.py
dest: /usr/local/bin/pgbackup.py
mode: "0755"
- name: WALの剪定をスケジュール
ansible.builtin.cron:
name: PostgreSQLのアーカイブされたWALを剪定
hour: 22
minute: 0
job: /usr/local/bin/pgbackup.py --clean-archive /archive
ライセンス
Academic Free License ("AFL") v. 3.0
著者情報
Install and manage a PostgreSQL (http://www.postgresql.org/) server.
ansible-galaxy install galaxyproject.postgresql