honzamach.postgresql
.. _section-role-postgresql:
Rol postgresql
Página de Ansible Galaxy <https://galaxy.ansible.com/honzamach/postgresql>
__Repositorio de GitHub <https://github.com/honzamach/ansible-role-postgresql>
__Página de Travis CI <https://travis-ci.org/honzamach/ansible-role-postgresql>
__
Rol de Ansible para la instalación conveniente de la base de datos PostgreSQL <https://www.postgresql.org/>
__.
Este rol está diseñado para mantener las cosas lo más simples posible y realiza solo la instalación y configuración básica del servicio de PostgreSQL. Cualquier ajuste de configuración avanzado debe hacerse manualmente. Este rol instala la última versión 12 y puede eliminar opcionalmente las versiones anteriores 10.x y 11.x. La migración real es, sin embargo, un proceso complejo y debe hacerse manualmente.
Tabla de Contenidos:
- :ref:
section-role-postgresql-installation
- :ref:
section-role-postgresql-dependencies
- :ref:
section-role-postgresql-usage
- :ref:
section-role-postgresql-variables
- :ref:
section-role-postgresql-files
- :ref:
section-role-postgresql-author
Este rol es parte del paquete MSMS <https://github.com/honzamach/msms>
__.
Algunas características comunes están documentadas en su :ref:manual <section-manual>
.
.. _section-role-postgresql-installation:
Instalación
Para instalar el rol honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>
__
desde Ansible Galaxy <https://galaxy.ansible.com/>
__, utiliza la variación del
siguiente comando::
ansible-galaxy install honzamach.postgresql
Para instalar el rol directamente desde GitHub <https://github.com>
__ clonando el
repositorio ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>
__,
utiliza la variación del siguiente comando::
git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql
Actualmente, la ventaja de usar la clonación directa de Git es la capacidad de actualizar fácilmente el rol cuando sale una nueva versión.
.. _section-role-postgresql-dependencies:
Dependencias
Este rol no depende de ningún otro rol.
Los siguientes roles tienen una dependencia directa de este rol:
- :ref:
griffin <section-role-griffin>
- :ref:
mentat <section-role-mentat>
- :ref:
mentat_dev <section-role-mentat-dev>
.. _section-role-postgresql-usage:
Uso
Ejemplo de contenido del archivo de inventario inventory
::
[servers_postgresql]
tu-servidor
Ejemplo de contenido del archivo de libro de funciones role_playbook.yml
::
- hosts: servers_postgresql
remote_user: root
roles:
- role: honzamach.postgresql
tags:
- role-postgresql
Ejemplo de uso::
# Ejecuta todo:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml
# Para actualizar la caché de paquetes antes de instalar cualquier paquete:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'
Se recomienda seguir estos principios de configuración:
Crear/editar el archivo
inventory/group_vars/all/vars.yml
y dentro definir algunos valores predeterminados razonables para todos tus servidores gestionados. Ejemplo::hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
Crear/editar el archivo encriptado :ref:
vault <section-overview-vault>
inventory/group_vars/all/vault.yml
y dentro almacenar la contraseña de encriptación de tu copia de seguridad::vault_hm_pgsql__monitoring_password: algo-muy-secreto-que-nadie-va-a-adiivinar
Usar archivos
inventory/host_vars/[tu-servidor]/vars.yml
para personalizar la configuración para servidores particulares. Consulta la sección :ref:section-role-postgresql-variables
para todas las opciones disponibles.
.. _section-role-postgresql-variables:
Variables de configuración
Variables internas del rol
.. envvar:: hm_pgsql__apt_key_url
URL que conduce a la clave GPG para firmar los paquetes de PostgreSQL.
* *Tipo:* ``string``
* *Predeterminado:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``
.. envvar:: hm_pgsql__apt_key_id
Identificador de la clave de firma.
* *Tipo:* ``string``
* *Predeterminado:* ``"ACCC4CF8"``
.. envvar:: hm_pgsql__apt_repository
Ubicación del repositorio de PostgreSQL.
* *Tipo:* ``string``
* *Predeterminado:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``
.. envvar:: hm_pgsql__major_version
Versión principal que deseas que este rol instale en el host de destino.
* *Tipo:* ``string``
* *Predeterminado:* ``"12"``
.. envvar:: hm_pgsql__remove_packages
Lista de paquetes definidos por separado para cada distribución de Linux y gestor de paquetes,
que NO DEBEN estar presentes en el sistema objetivo. Cualquier paquete en esta lista será eliminado
del host objetivo. Este rol actualmente solo reconoce ``apt`` para ``debian``.
* *Tipo de dato:* ``dict``
* *Predeterminado:* (consulta el archivo YAML ``defaults/main.yml``)
* *Ejemplo:*
.. code-block:: yaml
hm_logged__remove_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__remove_previous
Eliminar la versión anterior de la base de datos PostgreSQL (verdadero/falso).
* *Tipo:* ``bool``
* *Predeterminado:* ``false``
.. envvar:: hm_pgsql__install_packages
Lista de paquetes definidos por separado para cada distribución de Linux y gestor de paquetes,
que DEBEN estar presentes en el sistema objetivo. Cualquier paquete en esta lista será instalado en
el host objetivo. Este rol actualmente solo reconoce ``apt`` para ``debian``.
* *Tipo de dato:* ``dict``
* *Predeterminado:* (consulta el archivo YAML ``defaults/main.yml``)
* *Ejemplo:*
.. code-block:: yaml
hm_logged__install_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__apt_force_update
Forzar actualización de la caché de APT antes de instalar cualquier paquete ('yes','no').
* *Tipo de dato:* ``string``
* *Predeterminado:* ``"no"``
.. envvar:: hm_pgsql__user
Nombre del usuario del sistema UNIX para la base de datos PostgreSQL.
* *Tipo:* ``string``
* *Predeterminado:* ``"postgres"``
.. envvar:: hm_pgsql__group
Nombre del grupo del sistema UNIX para la base de datos PostgreSQL.
* *Tipo:* ``string``
* *Predeterminado:* ``"postgres"``
.. envvar:: hm_pgsql__monitoring_user
Nombre de la cuenta de usuario restringido para monitorear la base de datos PostgreSQL.
* *Tipo:* ``string``
* *Predeterminado:* ``"watchdog"``
.. envvar:: hm_pgsql__monitoring_password
Contraseña para la cuenta de usuario restringido para monitorear la base de datos PostgreSQL.
Debes encriptar esta contraseña con vault.
* *Tipo:* ``string``
* *Predeterminado:* ``"watchdog"``
.. envvar:: hm_pgsql__databases
Lista de todas las bases de datos de PostgreSQL que deben estar presentes en el sistema objetivo.
* *Tipo:* ``lista de cadenas``
* *Predeterminado:* ``[]`` (lista vacía)
.. envvar:: hm_pgsql__logdir
Ruta al directorio de registros.
* *Tipo:* ``string``
* *Predeterminado:* ``"/var/log/postgresql"``
.. envvar:: hm_pgsql__logfile
Ruta al archivo de registro.
* *Tipo:* ``string``
* *Predeterminado:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``
.. envvar:: hm_pgsql__logrotate
Interruptor de rotación de registros (verdadero/falso).
* *Tipo:* ``bool``
* *Predeterminado:* ``true``
.. envvar:: hm_pgsql__logrotate_options
Opciones de rotación de registros.
* *Tipo:* ``lista de cadenas``
* *Predeterminado:* (consulta el archivo YAML ``defaults/main.yml``)
.. envvar:: hm_pgsql__procs_mincnt
Número mínimo de procesos PostgreSQL en ejecución para monitoreo de salud.
* *Tipo:* ``int``
* *Predeterminado:* ``1``
.. envvar:: hm_pgsql__procs_maxcnt
Número máximo de procesos PostgreSQL en ejecución para monitoreo de salud.
* *Tipo:* ``int``
* *Predeterminado:* ``100``
.. envvar:: hm_pgsql__checks
Configuraciones para varios umbrales de advertencia y críticos de Nagios.
* *Tipo:* ``dict``
* *Predeterminado:* (consulta el archivo YAML ``defaults/main.yml``)
* *Ejemplo:*
.. code-block:: yaml
hm_pgsql__checks:
check_postgres_query_time:
w: 5 minutos
c: 10 minutos
...
Variables externas
--------------------------------------------------------------------------------
Este rol usa las siguientes variables externas definidas en otros roles:
:envvar:`hm_accounts__users`
Puedes etiquetar ciertos usuarios como administradores de esta base de datos PostgreSQL, y
se crearán cuentas de superusuario para ellos en la base de datos y se configurará
el acceso de autenticación a nivel ``peer``. Usa la etiqueta ``is_admin_postgresql: true``
como propiedad de una cuenta.
* *Ejemplo:*
.. code-block:: yaml
hm_accounts__users:
usuario:
is_admin_postgresql: true
...
:envvar:`hm_monitored__service_name`
Nombre del servicio NRPE en caso de que el servidor esté en el grupo **servers_monitored**
y el libro de funciones esté configurando automáticamente el monitoreo del sistema Mentat.
Variables integradas de Ansible
:envvar:group_names
Lista de nombres de grupo a los que pertenece el host actual. Esta variable se usa para resolver
:ref:`dependencias suaves del rol <section-overview-role-soft-dependencies>`.
:envvar:ansible_lsb['codename']
Nombre en clave de la distribución de Linux. Se usa para generar la URL del repositorio APT correcto
y para :ref:`personalizaciones de plantilla <section-overview-role-customize-templates>`.
Membresías de grupo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
servers_monitored
En caso de que el servidor de destino sea miembro de este grupo, se configura automáticamente el monitoreo de Nagios para la base de datos PostgreSQL.
servers_commonenv
En caso de que el servidor de destino sea miembro de este grupo, se configura automáticamente el script de estado del sistema para la base de datos PostgreSQL.
.. _section-role-postgresql-files:
Archivos gestionados
.. note::
Este rol admite la función de :ref:`personalización de plantillas <section-overview-role-customize-templates>`.
Este rol gestiona el contenido de los siguientes archivos en el sistema objetivo:
/etc/logrotate.d/postgresql-common
[TEMPLATE]/etc/nagios/nrpe.d/postgresql.cfg
[TEMPLATE]/opt/system-status/system-status.d/20-postgresql
[TEMPLATE]
.. _section-role-postgresql-author:
Autor y licencia
| Copyright: (C) desde 2019 Honza Mach honza.mach.ml@gmail.com | Autor: Honza Mach honza.mach.ml@gmail.com | El uso de este rol está regido por la licencia MIT, consulta el archivo LICENSE. |
Ansible role for convenient installation of the PostgreSQL database.
ansible-galaxy install honzamach.postgresql