honzamach.postgresql

.. _section-role-postgresql:

Rôle postgresql

  • Page Ansible Galaxy <https://galaxy.ansible.com/honzamach/postgresql>__
  • Dépôt GitHub <https://github.com/honzamach/ansible-role-postgresql>__
  • Page Travis CI <https://travis-ci.org/honzamach/ansible-role-postgresql>__

Rôle Ansible pour une installation pratique de la base de données PostgreSQL <https://www.postgresql.org/>__.

Ce rôle a pour but de garder les choses aussi simples que possible et effectue uniquement l'installation et la configuration de base du service PostgreSQL. Toute configuration avancée doit être effectuée manuellement. Ce rôle installe la dernière version 12 et peut éventuellement supprimer les versions précédentes 10.x et 11.x. La migration réelle est cependant un processus assez complexe qui doit être fait manuellement.

Table des Matières :

  • :ref:section-role-postgresql-installation
  • :ref:section-role-postgresql-dépendances
  • :ref:section-role-postgresql-utilisation
  • :ref:section-role-postgresql-variables
  • :ref:section-role-postgresql-fichiers
  • :ref:section-role-postgresql-auteur

Ce rôle fait partie du paquet MSMS <https://github.com/honzamach/msms>__. Certaines fonctionnalités communes sont documentées dans son :ref:manuel <section-manual>.

.. _section-role-postgresql-installation:

Installation

Pour installer le rôle honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>__ depuis Ansible Galaxy <https://galaxy.ansible.com/>__, veuillez utiliser une variante de la commande suivante::

ansible-galaxy install honzamach.postgresql

Pour installer le rôle directement depuis GitHub <https://github.com>__ en clonant le dépôt ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>__, veuillez utiliser une variante de la commande suivante::

git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql

Actuellement, l'avantage d'utiliser le clonage Git direct est la capacité à mettre à jour facilement le rôle lorsque de nouvelles versions sortent.

.. _section-role-postgresql-dependencies:

Dépendances

Ce rôle ne dépend d'aucun autre rôle.

Les rôles suivants ont une dépendance directe sur ce rôle :

  • :ref:griffin <section-role-griffin>
  • :ref:mentat <section-role-mentat>
  • :ref:mentat_dev <section-role-mentat-dev>

.. _section-role-postgresql-usage:

Utilisation

Exemple de contenu du fichier d'inventaire inventory::

[serveurs_postgresql]
votre-serveur

Exemple de contenu du fichier de playbook de rôle role_playbook.yml::

- hosts: serveurs_postgresql
  remote_user: root
  roles:
    - role: honzamach.postgresql
  tags:
    - role-postgresql

Exemple d'utilisation::

# Tout exécuter :
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml

# Pour mettre à jour le cache des paquets avant d'installer des paquets :
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'

Il est recommandé de suivre ces principes de configuration :

  • Créez/modifiez le fichier inventory/group_vars/all/vars.yml et définissez là des valeurs par défaut raisonnables pour tous vos serveurs gérés. Exemple::

      hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
    
  • Créez/modifiez le fichier crypté inventory/group_vars/all/vault.yml et y stockez votre mot de passe de chiffrement de sauvegarde::

      vault_hm_pgsql__monitoring_password: quelque-chose-de-très-secret-que-personne-ne-devinera
    
  • Utilisez les fichiers inventory/host_vars/[votre-serveur]/vars.yml pour personnaliser les paramètres pour des serveurs particuliers. Veuillez consulter la section :ref:section-role-postgresql-variables pour toutes les options disponibles.

.. _section-role-postgresql-variables:

Variables de configuration

Variables internes au rôle


.. envvar:: hm_pgsql__apt_key_url

    URL menant à la clé GPG pour signer les paquets PostgreSQL.

    * *Type:* ``string``
    * *Par défaut:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``

.. envvar:: hm_pgsql__apt_key_id

    Identifiant de la clé de signature.

    * *Type:* ``string``
    * *Par défaut:* ``"ACCC4CF8"``

.. envvar:: hm_pgsql__apt_repository

    Emplacement du dépôt PostgreSQL.

    * *Type:* ``string``
    * *Par défaut:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``

.. envvar:: hm_pgsql__major_version

    Version majeure que vous souhaitez que ce rôle installe sur l'hôte cible.

    * *Type:* ``string``
    * *Par défaut:* ``"12"``

.. envvar:: hm_pgsql__remove_packages

    Liste des paquets définis séparément pour chaque distribution Linux et gestionnaire de paquets
    qui NE DOIVENT PAS être présents sur le système cible. Tout paquet de cette liste sera supprimé
    de l'hôte cible. Ce rôle ne reconnaît actuellement que ``apt`` pour ``debian``.

    * *Type de données:* ``dict``
    * *Par défaut:* (veuillez consulter le fichier YAML ``defaults/main.yml``)
    * *Exemple:*

    .. code-block:: yaml

        hm_logged__remove_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__remove_previous

    Supprimer les versions précédentes de la base de données PostgreSQL (vrai/faux).

    * *Type:* ``bool``
    * *Par défaut:* ``false``

.. envvar:: hm_pgsql__install_packages

    Liste des paquets définis séparément pour chaque distribution Linux et gestionnaire de paquets
    qui DOIVENT être présents sur le système cible. Tout paquet de cette liste sera installé sur
    l'hôte cible. Ce rôle ne reconnaît actuellement que ``apt`` pour ``debian``.

    * *Type de données:* ``dict``
    * *Par défaut:* (veuillez consulter le fichier YAML ``defaults/main.yml``)
    * *Exemple:*

    .. code-block:: yaml

        hm_logged__install_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__apt_force_update

    Forcer la mise à jour du cache APT avant d'installer des paquets ('yes','no').

    * *Type de données:* ``string``
    * *Par défaut:* ``"no"``

.. envvar:: hm_pgsql__user

    Nom de l'utilisateur du système UNIX pour la base de données PostgreSQL.

    * *Type:* ``string``
    * *Par défaut:* ``"postgres"``

.. envvar:: hm_pgsql__group

    Nom du groupe système UNIX pour la base de données PostgreSQL.

    * *Type:* ``string``
    * *Par défaut:* ``"postgres"``

.. envvar:: hm_pgsql__monitoring_user

    Nom du compte utilisateur restreint pour surveiller la base de données PostgreSQL.

    * *Type:* ``string``
    * *Par défaut:* ``"watchdog"``

.. envvar:: hm_pgsql__monitoring_password

    Mot de passe pour le compte utilisateur restreint pour surveiller la base de données PostgreSQL.
    Vous devez chiffrer ce mot de passe avec vault.

    * *Type:* ``string``
    * *Par défaut:* ``"watchdog"``

.. envvar:: hm_pgsql__databases

    Liste de toutes les bases de données PostgreSQL qui doivent être présentes sur le système cible.

    * *Type:* ``list of strings``
    * *Par défaut:* ``[]`` (liste vide)

.. envvar:: hm_pgsql__logdir

    Chemin vers le répertoire des journaux.

    * *Type:* ``string``
    * *Par défaut:* ``"/var/log/postgresql"``

.. envvar:: hm_pgsql__logfile

    Chemin vers le fichier des journaux.

    * *Type:* ``string``
    * *Par défaut:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``

.. envvar:: hm_pgsql__logrotate

    Commutateur de rotation des journaux (vrai/faux).

    * *Type:* ``bool``
    * *Par défaut:* ``true``

.. envvar:: hm_pgsql__logrotate_options

    Options de rotation des journaux.

    * *Type:* ``list of strings``
    * *Par défaut:* (veuillez consulter le fichier YAML ``defaults/main.yml``)

.. envvar:: hm_pgsql__procs_mincnt

    Nombre minimal de processus PostgreSQL en cours d'exécution pour la surveillance de la santé.

    * *Type:* ``int``
    * *Par défaut:* ``1``

.. envvar:: hm_pgsql__procs_maxcnt

    Nombre maximal de processus PostgreSQL en cours d'exécution pour la surveillance de la santé.

    * *Type:* ``int``
    * *Par défaut:* ``100``

.. envvar:: hm_pgsql__checks

    Configurations pour divers seuils d'avertissement et critiques de vérification Nagios.

    * *Type:* ``dict``
    * *Par défaut:* (veuillez consulter le fichier YAML ``defaults/main.yml``)
    * *Exemple:*

    .. code-block:: yaml

        hm_pgsql__checks:
          check_postgres_query_time:
            w: 5 minutes
            c: 10 minutes
          ...


Variables étrangères
--------------------------------------------------------------------------------

Ce rôle utilise les variables étrangères suivantes définies dans d'autres rôles :

:envvar:`hm_accounts__users`

    Vous pouvez marquer certains utilisateurs comme administrateurs de cette base de données PostgreSQL et
    des comptes superutilisateurs seront créés pour eux dans la base de données avec un accès d'authentification
    de niveau ``peer``. Utilisez le drapeau ``is_admin_postgresql: true``
    comme propriété d'un compte.

    * *Exemple:*

    .. code-block:: yaml

        hm_accounts__users:
          user:
            is_admin_postgresql: true
          ...


:envvar:`hm_monitored__service_name`

    Nom du service NRPE si le serveur est dans le groupe **servers_monitored**
    et que le playbook configure automatiquement la surveillance du système Mentat.


Variables Ansible intégrées

:envvar:group_names

Liste des noms de groupes dont fait partie l'hôte actuel. Cette variable est utilisée pour résoudre
:ref:`dépendances de rôle souples <section-overview-role-soft-dependencies>`.

:envvar:ansible_lsb['codename']

Nom de code de la distribution Linux. Elle est utilisée pour générer l'URL correcte du dépôt APT
et pour :ref:`personnaliser les modèles <section-overview-role-customize-templates>`.

Adhésions de groupe

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • serveurs_monitored

    Si le serveur cible est membre de ce groupe, la surveillance Nagios est configurée automatiquement pour la base de données PostgreSQL.

  • serveurs_commonenv

    Si le serveur cible est membre de ce groupe, le script de statut système est configuré automatiquement pour la base de données PostgreSQL.

.. _section-role-postgresql-files:

Fichiers gérés

.. note::

Ce rôle prend en charge la fonctionnalité de :ref:`personnalisation des modèles <section-overview-role-customize-templates>`.

Ce rôle gère le contenu des fichiers suivants sur le système cible :

  • /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:

Auteur et licence

| Droits d'auteur : (C) depuis 2019 Honza Mach honza.mach.ml@gmail.com | Auteur : Honza Mach honza.mach.ml@gmail.com | L'utilisation de ce rôle est régie par la licence MIT, voir le fichier LICENSE. |

À propos du projet

Ansible role for convenient installation of the PostgreSQL database.

Installer
ansible-galaxy install honzamach.postgresql
Licence
mit
Téléchargements
143
Propriétaire