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