galaxyproject.postgresql

PostgreSQL

Un rol de Ansible para instalar y gestionar servidores de PostgreSQL. Este rol funciona con sistemas basados en Debian y RedHat, y proporciona scripts de respaldo para Arquivamiento Continuo de PostgreSQL y Recuperación en un Punto en el Tiempo. No crea ni gestiona usuarios, roles, grupos, bases de datos de PostgreSQL, etc. Para eso, consulta galaxyproject.postgresql_objects.

En plataformas basadas en RedHat, se instalarán los paquetes del Grupo de Desarrollo Global de PostgreSQL (PGDG). En plataformas basadas en Debian, puedes elegir entre los paquetes de la distribución (de APT) o los paquetes de PGDG.

Los cambios que requieren un reinicio no se aplicarán a menos que reinicies PostgreSQL manualmente. Este rol recargará el servidor para aquellos cambios de configuración que se pueden actualizar solo con una recarga, ya que recargar es una operación no intrusiva, pero las opciones que requieren un reinicio completo no causarán que el servidor se reinicie.

Requisitos

Este rol requiere Ansible 2.4 o superior.

Variables del Rol

Todas las variables son opcionales

  • postgresql_user_name: Nombre de usuario del sistema que se utilizará para PostgreSQL (por defecto: postgres).

  • postgresql_version: Versión de PostgreSQL a instalar. En plataformas basadas en Debian, el valor por defecto es la versión señalada por el metapackage postgresql. En plataformas basadas en RedHat, el valor por defecto es 10.

  • postgresql_flavor: En plataformas basadas en Debian, esto especifica si deseas usar paquetes de PostgreSQL de pgdg o los repositorios de apt de la distribución. Valores posibles: apt, pgdg (por defecto: apt).

  • postgresql_conf: Una lista de hashes (diccionarios) de opciones (keys) y valores para postgresql.conf. Estas opciones no se agregan directamente a postgresql.conf - el rol agrega un subdirectorio conf.d en el directorio de configuración y una declaración de inclusión para ese directorio en postgresql.conf. Las opciones establecidas en postgresql_conf se configurarán en conf.d/25ansible_postgresql.conf. Por razones de compatibilidad, esto también puede ser un solo hash, pero se prefiere la sintaxis de lista porque preserva el orden.

    Debido al análisis de YAML, debes tener cuidado al definir valores en postgresql_conf para asegurarte de que se escriben correctamente en el archivo de configuración. Por ejemplo:

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

    Se convierte en lo siguiente en 25ansible_postgresql.conf:

    max_connections = 250
    archive_mode = off
    work_mem: '8MB'
    
  • postgresql_pg_hba_conf: Una lista de líneas para agregar a pg_hba.conf.

  • postgresql_pg_hba_local_postgres_user: Si se establece en false, eliminará la entrada del usuario postgres de pg_hba.conf que está preconfigurada en las instalaciones de PostgreSQL basadas en Debian. Probablemente no quieras hacer esto a menos que sepas lo que estás haciendo.

  • postgresql_pg_hba_local_socket: Si se establece en false, eliminará la entrada local de pg_hba.conf que está preconfigurada por el paquete de PostgreSQL.

  • postgresql_pg_hba_local_ipv4: Si se establece en false, eliminará la entrada host ... 127.0.0.1/32 de pg_hba.conf que está preconfigurada por el paquete de PostgreSQL.

  • postgresql_pg_hba_local_ipv6: Si se establece en false, eliminará la entrada host ... ::1/128 de pg_hba.conf que está preconfigurada por el paquete de PostgreSQL.

  • postgresql_pgdata: Solo configura esto si has cambiado el directorio $PGDATA de la configuración predeterminada del paquete. Ten en cuenta que esto no configura PostgreSQL para usar un directorio diferente, deberás hacerlo tú mismo, solo permite que el rol localice el directorio correctamente.

  • postgresql_conf_dir: Igual que postgresql_pgdata pero para el directorio de configuración.

  • postgresql_install_psycopg2: Intentará instalar el paquete correcto que proporciona psycopg2 al intérprete de Python que Ansible está usando en el lado remoto. Esto permite el uso de los módulos Ansible postgresql_* (quizás a través de galaxyproject.postgresql_objects), que dependen de psycopg2. Por defecto es true.

Respaldos

Este rol puede desplegar y programar la configuración y scripts para mantener respaldos de PostgreSQL PITR.

Se harán respaldos completos en el intervalo configurado, mientras que los segmentos de registro por adelantado (WAL) entre los respaldos completos se archivarán en {{ postgresql_backup_dir }}/wal_archive/ cuando lo indique el servidor PostgreSQL. Los segmentos WAL se pueden eliminar de este directorio una vez que se haya eliminado el respaldo más antiguo que los referencia. Esto se hace automáticamente por el script de respaldo si postgresql_backup_dir está montado localmente.

Cuando postgresql_backup_dir es una ruta remota de rsync (que contiene un ":"), el script de respaldo seguirá manteniendo respaldos (incluyendo eliminar respaldos completos antiguos) pero no podrá eliminar automáticamente el directorio wal_archive/. Si puedes instalar la utilidad estándar pg_archivecleanup del paquete cliente de PostgreSQL en tu servidor de respaldo, puedes ejecutar el script de respaldo de este rol con la opción --clean-archive directamente en el servidor de respaldo.

  • postgresql_backup_dir: Si se establece, habilita respaldos PITR. Configúralo a un directorio donde se respalde tu base de datos (esto puede ser cualquier formato que soporte rsync, por ejemplo, user@host:/path). El respaldo más reciente estará en un subdirectorio llamado current.

  • postgresql_backup_local_dir: Ruta en el sistema de archivos del servidor PostgreSQL donde se colocarán los scripts de respaldo.

  • postgresql_backup_[hour|minute]: Controla a qué hora se ejecutará el trabajo cron para realizar un respaldo completo. Por defecto es a la 1:00 AM.

  • postgresql_backup_[day|month|weekday]: Controles adicionales de cron para cuándo se realiza el respaldo completo (por defecto: *).

  • postgresql_backup_post_command: Comando arbitrario para ejecutar después de la finalización exitosa de un respaldo programado.

Se pueden encontrar opciones adicionales relacionadas con los respaldos en el archivo de defaults.

Dependencias

La funcionalidad de respaldo requiere Python 2.7 o 3.5+, psycopg2 y rsync. Ten en cuenta que si instalas versiones PGDG de PostgreSQL en Enterprise Linux, los paquetes correspondientes de psycopg2 están disponibles en los repositorios yum de PGDG.

Ejemplo de Playbook

Instalación estándar: Configuración predeterminada en postgresql.conf, pg_hba.conf y versión predeterminada para el SO:

---

- hosts: dbservers
  roles:
    - galaxyproject.postgresql

Usar los paquetes de pgdg en un host basado en Debian:

---

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

Usar los paquetes de PostgreSQL 9.5 y establecer algunas opciones en postgresql.conf y entradas en pg_hba.conf:

---

- hosts: dbservers
  vars:
    postgresql_version: 9.5
    postgresql_conf:
      - listen_addresses: "''"    # deshabilitar la escucha en red (escuchar solo en socket de unix)
      - max_connections: 50       # disminuir el límite de conexiones
    postgresql_pg_hba_conf:
      - host all all 10.0.0.0/8 md5
  roles:
    - galaxyproject.postgresql

Habilitar respaldos en /archive:

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

Habilitar respaldos en /archive en un servidor remoto:

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

- hosts: backupservers
  tasks:
    - name: Instalar scripts de PostgreSQL
      ansible.builtin.apt:
        name: postgresql-common
    - name: Copiar script de respaldo
      ansible.builtin.copy:
        src: roles/galaxyproject.postgresql/files/backup.py
        dest: /usr/local/bin/pgbackup.py
        mode: "0755"
    - name: Programar la limpieza de WAL
      ansible.builtin.cron:
        name: Limpiar WAL archivados de PostgreSQL
        hour: 22
        minute: 0
        job: /usr/local/bin/pgbackup.py --clean-archive /archive

Licencia

Licencia Libre Académica ("AFL") v. 3.0

Información del Autor

La Comunidad Galaxy y colaboradores

Acerca del proyecto

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

Instalar
ansible-galaxy install galaxyproject.postgresql
Licencia
Unknown
Descargas
80.5k
Propietario
Galaxy is an open, web-based platform for data-intensive research.