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. |

Acerca del proyecto

Ansible role for convenient installation of the PostgreSQL database.

Instalar
ansible-galaxy install honzamach.postgresql
Licencia
mit
Descargas
143
Propietario