galaxyproject.postgresql

PostgreSQL

Un rôle Ansible pour installer et gérer des serveurs PostgreSQL. Ce rôle fonctionne avec des systèmes basés sur Debian et RedHat, et fournit des scripts de sauvegarde pour l'archivage continu de PostgreSQL et la récupération à un moment donné. Il ne crée ni ne gère les utilisateurs, rôles, groupes ou bases de données PostgreSQL. Pour cela, veuillez consulter galaxyproject.postgresql_objects.

Sur les plateformes basées sur RedHat, les paquets du PostgreSQL Global Development Group (PGDG) seront installés. Sur les plateformes basées sur Debian, vous pouvez choisir entre les paquets de la distribution (via APT) ou les paquets PGDG.

Les changements nécessitant un redémarrage ne seront pas appliqués à moins que vous ne redémarriez manuellement PostgreSQL. Ce rôle rechargera le serveur pour les changements de configuration qui peuvent être mis à jour avec un simple rechargement car le rechargement est une opération non intrusive, mais les options nécessitant un redémarrage complet ne provoqueront pas le redémarrage du serveur.

Exigences

Ce rôle nécessite Ansible 2.4+.

Variables de rôle

Toutes les variables sont optionnelles

  • postgresql_user_name: Nom d’utilisateur système à utiliser pour PostgreSQL (par défaut : postgres).

  • postgresql_version: Version de PostgreSQL à installer. Sur les plateformes basées sur Debian, la valeur par défaut est la version désignée par le méta-package postgresql. Sur les plateformes basées sur RedHat, la valeur par défaut est 10.

  • postgresql_flavor: Sur les plateformes basées sur Debian, cela spécifie si vous souhaitez utiliser les paquets PostgreSQL de pgdg ou ceux des dépôts apt de la distribution. Valeurs possibles : apt, pgdg (par défaut : apt).

  • postgresql_conf: Une liste de hachages (dictionnaires) d'options postgresql.conf (clés) et de valeurs. Ces options ne sont pas ajoutées directement à postgresql.conf - le rôle ajoute un sous-dossier conf.d dans le répertoire de configuration et une instruction d’inclusion pour ce dossier dans postgresql.conf. Les options définies dans postgresql_conf sont ensuite mises dans conf.d/25ansible_postgresql.conf. Pour des raisons de compatibilité, cela peut aussi être un unique hachage, mais la syntaxe de liste est préférée car elle préserve l'ordre.

    En raison du parsing YAML, vous devez faire attention lors de la définition des valeurs dans postgresql_conf pour vous assurer qu'elles soient correctement écrites dans le fichier de configuration. Par exemple :

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

    Cela devient ce qui suit dans 25ansible_postgresql.conf :

    max_connections = 250
    archive_mode = off
    work_mem: '8MB'
    
  • postgresql_pg_hba_conf: Une liste de lignes à ajouter à pg_hba.conf.

  • postgresql_pg_hba_local_postgres_user: S'il est défini sur false, cela supprimera l'entrée de l'utilisateur postgres dans pg_hba.conf qui est pré-configurée sur les installations PostgreSQL basées sur Debian. Vous ne voudrez probablement pas faire cela à moins de savoir ce que vous faites.

  • postgresql_pg_hba_local_socket: S'il est défini sur false, cela supprimera l'entrée local dans pg_hba.conf qui est pré-configurée par le paquet PostgreSQL.

  • postgresql_pg_hba_local_ipv4: S'il est défini sur false, cela supprimera l'entrée host ... 127.0.0.1/32 dans pg_hba.conf qui est pré-configurée par le paquet PostgreSQL.

  • postgresql_pg_hba_local_ipv6: S'il est défini sur false, cela supprimera l'entrée host ... ::1/128 dans pg_hba.conf qui est pré-configurée par le paquet PostgreSQL.

  • postgresql_pgdata: Ne définissez cela que si vous avez changé le répertoire $PGDATA par rapport à la valeur par défaut du paquet. Notez que cela ne configure pas PostgreSQL pour utiliser effectivement un répertoire différent, vous devrez le faire vous-même, cela permet simplement au rôle de localiser correctement le répertoire.

  • postgresql_conf_dir: Comme avec postgresql_pgdata, mais pour le répertoire de configuration.

  • postgresql_install_psycopg2: Tente d'installer le paquet correct fournissant psycopg2 à l'interpréteur Python utilisé par Ansible sur le côté distant. Cela permet d'utiliser les modules Ansible postgresql_* (peut-être via galaxyproject.postgresql_objects), qui dépendent de psycopg2. Par défaut, cela vaut true.

Sauvegardes

Ce rôle peut déployer et programmer la configuration et les scripts pour maintenir les sauvegardes PITR de PostgreSQL.

Des sauvegardes complètes seront effectuées à l'intervalle configuré, tandis que les segments de journal de pré-écriture (WAL) entre les sauvegardes complètes seront archivés dans {{ postgresql_backup_dir }}/wal_archive/ lorsqu'instruit par le serveur PostgreSQL. Les segments WAL peuvent être supprimés de ce répertoire une fois la plus ancienne sauvegarde les référant supprimée. Cela est fait automatiquement par le script de sauvegarde si postgresql_backup_dir est monté localement.

Lorsque postgresql_backup_dir est un chemin rsync distant (contenant un ":"), le script de sauvegarde continuera de maintenir des sauvegardes (y compris en supprimant les anciennes sauvegardes complètes) mais ne pourra pas nettoyer automatiquement le répertoire wal_archive/. Si vous pouvez installer l'outil standard pg_archivecleanup à partir du paquet client PostgreSQL sur votre serveur de sauvegarde, vous pouvez exécuter le script de sauvegarde de ce rôle avec l'option --clean-archive directement sur le serveur de sauvegarde.

  • postgresql_backup_dir: S'il est défini, active les sauvegardes PITR. Définissez-le sur un répertoire où votre base de données sera sauvegardée (cela peut être n'importe quel format pris en charge par rsync, par exemple, user@host:/path). La sauvegarde la plus récente sera dans un sous-répertoire nommé current.

  • postgresql_backup_local_dir: Chemin système sur le serveur PostgreSQL où des scripts de sauvegarde seront placés.

  • postgresql_backup_[hour|minute]: Contrôle à quelle heure le travail cron sera exécuté pour effectuer une sauvegarde complète. Par défaut à 1:00 AM.

  • postgresql_backup_[day|month|weekday]: Contrôles cron supplémentaires pour quand la sauvegarde complète est effectuée (par défaut : *).

  • postgresql_backup_post_command: Commande arbitraire à exécuter après la réussite d'une sauvegarde programmée.

D'autres options concernant les sauvegardes peuvent être trouvées dans le fichier par défaut.

Dépendances

La fonctionnalité de sauvegarde nécessite Python 2.7 ou 3.5+, psycopg2 et rsync. Notez que si vous installez les versions PGDG de PostgreSQL sur Enterprise Linux, les paquets psycopg2 correspondants sont disponibles dans les dépôts yum de PGDG.

Exemple de Playbook

Installation standard : Fichiers de configuration postgresql.conf, pg_hba.conf par défaut et version par défaut pour le système d'exploitation :

---

- hosts: dbservers
  roles:
    - galaxyproject.postgresql

Utiliser les paquets pgdg sur un hôte basé sur Debian :

---

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

Utiliser les paquets PostgreSQL 9.5 et définir quelques options postgresql.conf et entrées pg_hba.conf :

---

- hosts: dbservers
  vars:
    postgresql_version: 9.5
    postgresql_conf:
      - listen_addresses: "''"    # désactiver l'écoute réseau (écouter uniquement sur socket unix)
      - max_connections: 50       # diminuer la limite de connexions
    postgresql_pg_hba_conf:
      - host all all 10.0.0.0/8 md5
  roles:
    - galaxyproject.postgresql

Activer les sauvegardes vers /archive :

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

Activer les sauvegardes vers /archive sur un serveur distant :

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

- hosts: backupservers
  tasks:
    - name: Installer les scripts PostgreSQL
      ansible.builtin.apt:
        name: postgresql-common
    - name: Copier le script de sauvegarde
      ansible.builtin.copy:
        src: roles/galaxyproject.postgresql/files/backup.py
        dest: /usr/local/bin/pgbackup.py
        mode: "0755"
    - name: Programmer le nettoyage des WAL archivés
      ansible.builtin.cron:
        name: Nettoyer les WAL archivés PostgreSQL
        hour: 22
        minute: 0
        job: /usr/local/bin/pgbackup.py --clean-archive /archive

Licence

Licence libre académique ("AFL") v. 3.0

Informations sur l’auteur

La Communauté Galaxy et les contributeurs

À propos du projet

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

Installer
ansible-galaxy install galaxyproject.postgresql
Licence
Unknown
Téléchargements
80.5k
Propriétaire
Galaxy is an open, web-based platform for data-intensive research.