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 sontype, database, user, auth_method, los opcionales sonaddress, 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
Ansible role to deploy postgresql software
ansible-galaxy install enix.postgresql