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