galaxyproject.postgresql

PostgreSQL

Eine [Ansible][ansible] Rolle zur Installation und Verwaltung von [PostgreSQL][postgresql] Servern. Diese Rolle funktioniert sowohl mit Debian- als auch mit RedHat-basierten Systemen und bietet Backupscripts für [PostgreSQL Continuous Archiving und Point-in-Time Recovery][postgresql_pitr]. Sie erstellt oder verwaltet keine PostgreSQL-Nutzer, Rollen, Gruppen, Datenbanken usw. Für diese Funktionen siehe [galaxyproject.postgresql_objects][postgresql_objects].

Auf RedHat-basierten Plattformen werden die [PostgreSQL Global Development Group (PGDG) Pakete][pgdg_yum] installiert. Auf Debian-basierten Plattformen können die Pakete der Distribution (von APT) oder die [PGDG Pakete][pgdg_apt] ausgewählt werden.

Änderungen, die einen Neustart erfordern, werden nicht angewendet, es sei denn, Sie starten PostgreSQL manuell neu. Diese Rolle wird den Server für Konfigurationsänderungen neu laden, die nur ein Reload erfordern, da dies ein nicht-invasiver Vorgang ist. Optionen, die einen vollständigen Neustart benötigen, führen jedoch nicht zu einem automatischen Neustart des Servers.

Anforderungen

Diese Rolle benötigt Ansible 2.4 oder höher.

Rollenvariablen

Alle Variablen sind optional

  • postgresql_user_name: Systembenutzername, der für PostgreSQL verwendet werden soll (Standard: postgres).

  • postgresql_version: Zu installierende PostgreSQL-Version. Auf Debian-basierten Plattformen ist der Standard die Version, auf die das postgresql Metapaket verweist. Auf RedHat-basierten Plattformen ist der Standard 10.

  • postgresql_flavor: Auf Debian-basierten Plattformen gibt dies an, ob PostgreSQL-Pakete von pgdg oder aus den apt-Repositories der Distribution verwendet werden sollen. Mögliche Werte: apt, pgdg (Standard: apt).

  • postgresql_conf: Eine Liste von Hashes (Wörterbüchern) von postgresql.conf Optionen (Schlüsseln) und Werten. Diese Optionen werden nicht direkt zu postgresql.conf hinzugefügt - die Rolle fügt ein conf.d Unterverzeichnis im Konfigurationsverzeichnis und eine Include-Anweisung für dieses Verzeichnis zur postgresql.conf hinzu. Optionen, die in postgresql_conf gesetzt werden, erscheinen dann in conf.d/25ansible_postgresql.conf. Aus Gründen der Abwärtskompatibilität kann dies auch ein einzelner Hash sein, aber die Listen-Syntax ist bevorzugt, da sie die Reihenfolge beibehält.

    Aufgrund der YAML-Parsing müssen Sie darauf achten, wie Sie Werte in postgresql_conf definieren, um sicherzustellen, dass sie korrekt in die Konfigurationsdatei geschrieben werden. Zum Beispiel:

    postgresql_conf:
      - max_connections: 250
      - archive_mode: "off"
      - work_mem: "'8MB'"
    

    Wird zu folgendem in 25ansible_postgresql.conf:

    max_connections = 250
    archive_mode = off
    work_mem: '8MB'
    
  • postgresql_pg_hba_conf: Eine Liste von Zeilen, die zu pg_hba.conf hinzugefügt werden sollen.

  • postgresql_pg_hba_local_postgres_user: Wenn auf false gesetzt, wird der Eintrag des postgres Benutzers aus pg_hba.conf entfernt, der standardmäßig auf Debian-basierten PostgreSQL-Installationen vorkonfiguriert ist. Wahrscheinlich wollen Sie dies nicht tun, es sei denn, Sie wissen, was Sie tun.

  • postgresql_pg_hba_local_socket: Wenn auf false gesetzt, wird der local Eintrag aus pg_hba.conf entfernt, der durch das PostgreSQL-Paket vorkonfiguriert ist.

  • postgresql_pg_hba_local_ipv4: Wenn auf false gesetzt, wird der host ... 127.0.0.1/32 Eintrag aus pg_hba.conf entfernt, der durch das PostgreSQL-Paket vorkonfiguriert ist.

  • postgresql_pg_hba_local_ipv6: Wenn auf false gesetzt, wird der host ... ::1/128 Eintrag aus pg_hba.conf entfernt, der durch das PostgreSQL-Paket vorkonfiguriert ist.

  • postgresql_pgdata: Setzen Sie dies nur, wenn Sie das $PGDATA Verzeichnis von der Standardpaketkonfiguration geändert haben. Beachten Sie, dass dies PostgreSQL nicht konfiguriert, um tatsächlich ein anderes Verzeichnis zu verwenden. Das müssen Sie selbst tun. Es ermöglicht der Rolle nur, das Verzeichnis korrekt zu finden.

  • postgresql_conf_dir: Wie postgresql_pgdata, aber für das Konfigurationsverzeichnis.

  • postgresql_install_psycopg2: Versucht, das richtige Paket bereitzustellen, das psycopg2 für den Python-Interpreter installiert, den Ansible auf der entfernten Seite verwendet. Dadurch können die postgresql_* Ansible-Module (vielleicht über [galaxyproject.postgresql_objects][postgresql_objects]), die von psycopg2 abhängen, verwendet werden. Standardmäßig auf true.

Backups

Diese Rolle kann die Konfiguration und Skripte bereitstellen und planen, um PostgreSQL [PITR][postgresql_pitr] Backups zu verwalten.

Vollständige Backups werden in den konfigurierten Intervallen erstellt, während die Write-Ahead-Log (WAL) Segmente zwischen den vollständigen Backups in {{ postgresql_backup_dir }}/wal_archive/ archiviert werden, wenn der PostgreSQL-Server dies anweist. WAL-Segmente können aus diesem Verzeichnis entfernt werden, sobald das älteste Backup, das auf sie verweist, entfernt wurde. Dies geschieht automatisch für Sie durch das Backup-Skript, wenn postgresql_backup_dir lokal gemountet ist.

Wenn postgresql_backup_dir ein Remote-Rsync-Pfad ist (der einen ":" enthält), wird das Backup-Skript weiterhin Backups verwalten (einschließlich der Löschung älterer vollständiger Backups), kann jedoch das Verzeichnis wal_archive/ nicht automatisch bereinigen. Wenn Sie in der Lage sind, das Standard-Utility pg_archivecleanup aus dem PostgreSQL-Client-Paket auf Ihrem Backup-Server zu installieren, können Sie das Backup-Skript dieser Rolle mit der Option --clean-archive direkt auf dem Backup-Server ausführen.

  • postgresql_backup_dir: Wenn gesetzt, aktiviert dies PITR-Backups. Setzen Sie dies auf ein Verzeichnis, in dem Ihre Datenbank gesichert wird (dies kann jedes von rsync unterstützte Format sein, z.B. user@host:/path). Das aktuellste Backup wird in einem Unterverzeichnis namens current gespeichert.

  • postgresql_backup_local_dir: Pfad im Dateisystem auf dem PostgreSQL-Server, wo Backup-Skripte abgelegt werden.

  • postgresql_backup_[hour|minute]: Steuert, zu welcher Zeit der Cron-Job läuft, um ein vollständiges Backup durchzuführen. Standardmäßig auf 1:00 Uhr.

  • postgresql_backup_[day|month|weekday]: Zusätzliche Cron-Steuerungen dafür, wann das vollständige Backup erstellt wird (Standard: *).

  • postgresql_backup_post_command: Beliebiger Befehl, der nach erfolgreichem Abschluss eines geplanten Backups ausgeführt wird.

Weitere Optionen zu Backups finden Sie in der Defaults-Datei.

Abhängigkeiten

Die Backup-Funktionalität erfordert Python 2.7 oder 3.5+, psycopg2 und rsync. Beachten Sie, dass bei der Installation von PGDG-Versionen von PostgreSQL auf Enterprise Linux die entsprechenden psycopg2-Pakete aus den PGDG-YUM-Repositories verfügbar sind.

Beispiel-Playbook

Standardinstallation: Standard postgresql.conf, pg_hba.conf und Standardversion für das Betriebssystem:

---

- hosts: dbservers
  roles:
    - galaxyproject.postgresql

Verwendung der pgdg-Pakete auf einem Debian-basierten Host:

---

- hosts: dbservers
  vars:
    postgresql_flavor: pgdg
  roles:
    - galaxyproject.postgresql

Verwendung der PostgreSQL 9.5-Pakete und Setzen einiger Optionen in postgresql.conf und Einträgen in pg_hba.conf:

---

- hosts: dbservers
  vars:
    postgresql_version: 9.5
    postgresql_conf:
      - listen_addresses: "''"    # Netzwerk-Listening deaktivieren (nur über Unix-Socket anhören)
      - max_connections: 50       # Verbindungsobergrenze verringern
    postgresql_pg_hba_conf:
      - host all all 10.0.0.0/8 md5
  roles:
    - galaxyproject.postgresql

Backups nach /archive aktivieren:

- hosts: all
  vars:
    postgresql_backup_dir: /archive
  roles:
    - galaxyproject.postgresql

Backups nach /archive auf einem Remote-Server aktivieren:

- hosts: dbservers
  vars:
    postgresql_backup_dir: backup.example.org:/archive
  roles:
    - galaxyproject.postgresql

- hosts: backupservers
  tasks:
    - name: PostgreSQL-Skripte installieren
      ansible.builtin.apt:
        name: postgresql-common
    - name: Backup-Skript kopieren
      ansible.builtin.copy:
        src: roles/galaxyproject.postgresql/files/backup.py
        dest: /usr/local/bin/pgbackup.py
        mode: "0755"
    - name: WAL-Bereinigung planen
      ansible.builtin.cron:
        name: Bereinigen der archivierten WALs von PostgreSQL
        hour: 22
        minute: 0
        job: /usr/local/bin/pgbackup.py --clean-archive /archive

Lizenz

Akademische Freilizenz ("AFL") v. 3.0

Autoreninformation

Die Galaxy Community und Beitragsleistende

Über das Projekt

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

Installieren
ansible-galaxy install galaxyproject.postgresql
Lizenz
Unknown
Downloads
80.5k
Besitzer
Galaxy is an open, web-based platform for data-intensive research.