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. |
Ansible role for convenient installation of the PostgreSQL database.
ansible-galaxy install honzamach.postgresql