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リポジトリのいずれを使用するかを指定します。可能な値:aptpgdg(デフォルト:apt)。

  • postgresql_confpostgresql.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_confpg_hba.confに追加する行のリスト

  • postgresql_pg_hba_local_postgres_userfalseに設定すると、DebianベースのPostgreSQLインストールで事前設定されたpostgresユーザーのエントリーがpg_hba.confから削除されます。何をしているか分からない限り、これを行うのはお勧めできません。

  • postgresql_pg_hba_local_socketfalseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.conflocalエントリーが削除されます。

  • postgresql_pg_hba_local_ipv4falseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.confhost ... 127.0.0.1/32エントリーが削除されます。

  • postgresql_pg_hba_local_ipv6falseに設定すると、PostgreSQLパッケージによって事前設定されたpg_hba.confhost ... ::1/128エントリーが削除されます。

  • postgresql_pgdata:パッケージのデフォルトから$PGDATAディレクトリを変更した場合のみ設定します。これはPostgreSQLが実際に異なるディレクトリを使用するようには設定されませんので、自分で行う必要があります。ただ、この役割は適切にディレクトリを指定することを可能にします。

  • postgresql_conf_dirpostgresql_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.confpg_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

著者情報

Galaxyコミュニティおよび貢献者

プロジェクトについて

Install and manage a PostgreSQL (http://www.postgresql.org/) server.

インストール
ansible-galaxy install galaxyproject.postgresql
ライセンス
Unknown
ダウンロード
80.5k
所有者
Galaxy is an open, web-based platform for data-intensive research.