geerlingguy.postgresql
Rol de Ansible: PostgreSQL
Instala y configura el servidor PostgreSQL en servidores RHEL/CentOS o Debian/Ubuntu.
Requisitos
No se requieren requisitos especiales; ten en cuenta que este rol requiere acceso root, por lo que debes ejecutarlo en un playbook con become: yes
, o invocar el rol en tu playbook de la siguiente manera:
- hosts: database
roles:
- role: geerlingguy.postgresql
become: yes
Variables de Rol
Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml
):
postgresql_enablerepo: ""
(Solo RHEL/CentOS) Puedes establecer un repositorio para usar en la instalación de PostgreSQL pasándolo aquí.
postgresql_restarted_state: "restarted"
Establece el estado del servicio cuando se realizan cambios en la configuración. Los valores recomendados son restarted
o reloaded
.
postgresql_python_library: python-psycopg2
Biblioteca utilizada por Ansible para comunicarse con PostgreSQL. Si usas Python 3 (por ejemplo, configurado con ansible_python_interpreter
), debes cambiarlo a python3-psycopg2
.
postgresql_user: postgres
postgresql_group: postgres
El usuario y grupo con los que se ejecutará PostgreSQL.
postgresql_unix_socket_directories:
- /var/run/postgresql
Los directorios (normalmente uno, pero pueden ser varios) donde se creará el socket de PostgreSQL.
postgresql_service_state: started
postgresql_service_enabled: true
Controla el estado del servicio postgresql y si debe iniciarse al arrancar.
postgresql_global_config_options:
- option: unix_socket_directories
value: '{{ postgresql_unix_socket_directories | join(",") }}'
- option: log_directory
value: 'log'
Opciones de configuración global que se establecerán en postgresql.conf
.
Para versiones de PostgreSQL anteriores a la 9.3, necesitas sobrescribir al menos esta variable y establecer option
a unix_socket_directory
.
Si sobrescribes el valor de option: log_directory
con otra ruta, ya sea relativa o absoluta, este rol la creará por ti.
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 }
Configura entradas de autenticación basada en host que se establecerán en pg_hba.conf
. Las opciones para las entradas incluyen:
type
(requerido)database
(requerido)user
(requerido)address
(uno de estos o los dos siguientes son requeridos)ip_address
ip_mask
auth_method
(requerido)auth_options
(opcional)
Si sobrescribes, asegúrate de copiar todas las entradas existentes de defaults/main.yml
si necesitas preservar las entradas existentes.
postgresql_locales:
- 'en_US.UTF-8'
(Solo Debian/Ubuntu) Utilizado para generar las configuraciones regionales utilizadas por las bases de datos PostgreSQL.
postgresql_databases:
- name: exampledb # requerido; el resto son opcionales
lc_collate: # predeterminado a 'en_US.UTF-8'
lc_ctype: # predeterminado a 'en_US.UTF-8'
encoding: # predeterminado a 'UTF-8'
template: # predeterminado a 'template0'
login_host: # predeterminado a 'localhost'
login_password: # predeterminado a no configurado
login_user: # predeterminado a 'postgresql_user'
login_unix_socket: # predeterminado al primero de postgresql_unix_socket_directories
port: # predeterminado a no configurado
owner: # predeterminado a postgresql_user
state: # predeterminado a 'present'
Una lista de bases de datos que asegurar que existan en el servidor. Solo se requiere el name
; todas las demás propiedades son opcionales.
postgresql_users:
- name: jdoe #requerido; el resto son opcionales
password: # predeterminado a no configurado
encrypted: # predeterminado a no configurado
priv: # predeterminado a no configurado
role_attr_flags: # predeterminado a no configurado
db: # predeterminado a no configurado
login_host: # predeterminado a 'localhost'
login_password: # predeterminado a no configurado
login_user: # predeterminado a '{{ postgresql_user }}'
login_unix_socket: # predeterminado al primero de postgresql_unix_socket_directories
port: # predeterminado a no configurado
state: # predeterminado a 'present'
Una lista de usuarios que asegurar que existan en el servidor. Solo se requiere el name
; todas las demás propiedades son opcionales.
postgres_users_no_log: true
Si se debe o no mostrar los datos del usuario (que pueden contener información sensible, como contraseñas) al administrar usuarios.
postgresql_version: [específico del SO]
postgresql_data_dir: [específico del SO]
postgresql_bin_path: [específico del SO]
postgresql_config_path: [específico del SO]
postgresql_daemon: [específico del SO]
postgresql_packages: [específico del SO]
Variables específicas del sistema operativo que se establecen mediante archivos incluidos en el directorio vars
de este rol. No deben ser sobrescritas a menos que estés usando una versión de PostgreSQL que no fue instalada utilizando paquetes del sistema.
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: database
become: yes
vars_files:
- vars/main.yml
roles:
- geerlingguy.postgresql
Dentro de vars/main.yml
:
postgresql_databases:
- name: example_db
postgresql_users:
- name: example_user
password: supersecure
Licencia
MIT / BSD
Información del Autor
Este rol fue creado en 2016 por Jeff Geerling, autor de Ansible for DevOps.
ansible-galaxy install geerlingguy.postgresql