enix.postgresql

enix.postgresql

Un rol para desplegar y configurar la versión de postgresql en hosts unix utilizando Ansible.

Requisitos

Targets soportados:

  • Debian 9 "Stretch"
  • Debian 10 "Buster"
  • Debian 11 "Bullseye"
  • Ubuntu 20.04 "Focal"
  • Ubuntu 22.04 "Jammy"

Variables del Rol

Este rol viene preconfigurado con casi todas las opciones por defecto disponibles. Puedes sobrescribir cada una en las variables de tus hosts/grupos, en tu inventario, o en tu play. Consulta los valores por defecto anotados en defaults/main.yml para obtener ayuda en la configuración.

  • postgresql__version - rama de postgresql a instalar. Por defecto es 14. Disponibles: 10, 11, 12, 13, 14.
  • postgresql__extensions - paquetes de extensiones de postgresql a instalar.
  • postgresql__global_config_options - opciones de configuración global a establecer en postgresql.conf. Opciones comunes son:
postgresql__global_config_options:
  - option: listen_addresses
    value: '*'
  - option: log_min_duration_statement
    value: 1000
  - option: bonjour
    value: off
    state: absent
  • postgresql__includeconf - lista de archivos de configuración a templar y enviar a conf.d/.
  • postgresql__hba_entries - entradas de autenticación basada en host a configurar. Sobrescribirá las predeterminadas de PostgreSQL. No se define un predeterminado. Los campos obligatorios son type, database, user, auth_method, los opcionales son address, ip_address, ip_mask, auth_options. Para replicar la configuración proporcionada por el paquete:
postgresql_hba_entries:
  - {type: local, database: all, user: postgres, auth_method: peer}
  - {type: local, database: all, user: all, auth_method: peer}
  - {type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5}
  - {type: host, database: all, user: all, address: '::1/128', auth_method: md5}
# a partir de la versión 10 hay un rol de replicación
  - {type: local, database: replication, user: all, auth_method: peer}
  - {type: host, database: replication, user: all, address: '127.0.0.1/32', auth_method: md5}
  - {type: host, database: replication, user: all, address: '::1/128', auth_method: md5}
  • postgresql__users - Usuarios a crear en el servidor postgresql y credenciales asociadas:
postgresql__users:
  - {name: "foobar",
    password: "supersecure",
    encrypted: yes,
    expires: 'infinity',
    state: 'present',
    conn_limit: none,
    priv: none,
    role_attr_flags: none,
    db: none
  • postgresql__databases - estado de las bases de datos que se van a instalar en el servidor. El único parámetro obligatorio es el nombre:
postgresql__databases:
  - {name: test,
    lc_collate: 'en_US.UTF-8',
    lc_ctype: 'en_US.UTF-8',
    encoding: 'UTF-8',
    template: 'template0',
    owner: postgres,
    extension: [], # asegúrate de haber instalado el módulo de extensión necesario antes
    state: 'present'
   }
  • postgresql__install_pgbackrest - instalar el software pgbackrest https://pgbackrest.org.
  • postgresql__install_pg_auto_failover - instalar el software pg_auto_failover https://github.com/citusdata/pg_auto_failover.
  • postgresql__disable_initdb - deshabilitar la creación del clúster principal por defecto. Útil en caso de creación de clúster pg_auto_failover, o solo instalación del paquete.

Dependencias

  • Ninguna

Uso

Usa Ansible galaxy requirements.yml

    - src: enix.postgresql

Y agrégalo a los roles de tu play:

    - hosts: all
      roles:
        - role: enix.postgresql:
            postgresql__var: true

También puedes usar el rol como un playbook. Se te pedirá qué hosts se deben aprovisionar, y puedes configurar aún más el play usando --extra-vars.

ansible-playbook -i inventario --extra-vars='{...}' main.yml

Tareas pendientes

  • Verificar si estamos desplegando en un réplica. En este caso, no crear base de datos, ni usuario.
  • Agregar pruebas CI usando molecule.

Registro de cambios

2.1.0

Agregar instalación del software pgbackrest y pg_auto_failover. Agregar opción disable_initdb. Esto evita que la instalación configure el clúster principal por defecto de postgresql.

2.0.0

Agregar soporte para postgresl 13 y 14. Agregar soporte para Debian 10 Buster y Debian 11 Bullseye. Agregar soporte para Ubuntu 20.04 Focal y Ubuntu 22.04 Jammy. Eliminar soporte para debian jessie. Cambiar a pruebas con molecule. Usar nuevas tareas FQDN de ansible.

1.2.0

Agregar soporte para postgresql 12.

1.1.0

Agregar soporte para una lista de extensiones en la definición y configuración de bases de datos.

1.0.0

Versión inicial.

Licencia

GPLv2

Información del autor

Laurent CORBES laurent.corbes@enix.fr - http://www.enix.io

Acerca del proyecto

Ansible role to deploy postgresql software

Instalar
ansible-galaxy install enix.postgresql
Licencia
Unknown
Descargas
19.2k
Propietario
Enix