giner.barman

Exécuter des tests

Rôle Ansible : Barman

Installe et configure Barman sur Linux avec des options :

  • sauvegarde régulière (exécutée par cron)
  • téléchargement des wals et snapshots vers S3 (exécuté par cron)
  • collecte de métriques (par telegraf)

Ce rôle vise à être aussi neutre que possible, c'est-à-dire que tous les paramètres de configuration sont passés directement aux configurations de Barman.

Exigences

  • Ubuntu

Installation

Installez via Ansible Galaxy :

ansible-galaxy collection install giner.barman

Ou incluez ce rôle dans votre fichier requirements.yml :

roles:
  - name: giner.barman

Variables du Rôle

Les variables disponibles sont listées ci-dessous, avec les valeurs par défaut (voir defaults/main.yml) :

État demandé pour Barman. Remplacez par absent pour désinstaller Barman. Les données ne seront pas supprimées.

barman_state: started

État demandé pour le paquet Barman. Remplacez par latest pour mettre à jour Barman.

barman_package_state: present

Remplacements de la configuration globale de Barman (clé/valeur).

barman_config: {}

Serveurs PostgreSQL à sauvegarder.

barman_pg_servers: []    # Les clés sont : name, params, pgpass et cron. Voir un exemple ci-dessous.

Configurer telegraf pour collecter les métriques de Barman.

barman_telegraf_enabled: false

Intervalle de collecte des métriques.

barman_telegraf_interval: 1m

Dépendances

Aucune.

Exemple de Playbook

# Configurer les utilisateurs et leurs privilèges sur le serveur de base de données PostgreSQL
# http://docs.pgbarman.org/release/2.12/#postgresql-connection
- hosts: postgresqls
  vars:
    barman_user: barman
    barman_pass: BARMANPASS_CHANGEZ_MOI
    barman_streaming_user: streaming_barman
    barman_streaming_pass: STREAMINGPASS_CHANGEZ_MOI
  tasks:
  - name: Ajouter l'utilisateur PostgreSQL barman_user
    community.postgresql.postgresql_user:
      user: "{{ barman_user }}"
      password: "{{ barman_pass }}"
      role_attr_flags: replication
      groups: [pg_read_all_settings, pg_read_all_stats]
  - name: Ajouter l'utilisateur PostgreSQL barman_streaming_user
    community.postgresql.postgresql_user:
      user: "{{ barman_streaming_user }}"
      password: "{{ barman_streaming_pass }}"
      role_attr_flags: replication
  - name: ACCORDER DES PRÉROGATIVES D'EXÉCUTION SUR LA FONCTION pg_XXX À barman_user
    community.postgresql.postgresql_privs:
      db: postgres
      privs: EXECUTE
      type: function
      obj: pg_start_backup(text:boolean:boolean),pg_stop_backup(),pg_stop_backup(boolean:boolean),pg_switch_wal(),pg_create_restore_point(text)
      schema: pg_catalog
      roles: "{{ barman_user }}"

# Configurer et installer Barman
- hosts: barmans
  vars:
    barman_name: mypgserver
    barman_pg_hosts: 10.10.10.10
    barman_pg_ports: 5432
    barman_user: barman
    barman_pass: BARMANPASS_CHANGEZ_MOI
    barman_streaming_user: streaming_barman
    barman_streaming_pass: STREAMINGPASS_CHANGEZ_MOI
    barman_pg_servers:
    - name: "{{ barman_name }}"
      params:
      - description: "Base de données PostgreSQL (Streaming-Uniquement)"
      - conninfo: 'host={{ barman_pg_hosts }} port={{ barman_pg_ports }} user={{ barman_user }} dbname=postgres'
      - streaming_conninfo: 'host={{ barman_pg_hosts }} port={{ barman_pg_ports }} user={{ barman_streaming_user }}'
      - backup_method: "postgres"
      - streaming_archiver: "on"
      - slot_name: "barman"
      - create_slot: "auto"
      - retention_policy: "fenêtre de récupération de 31 jours"
      pgpass:
      - "*:*:postgres:{{ barman_user }}:{{ barman_pass }}"
      - "*:*:replication:{{ barman_streaming_user }}:{{ barman_streaming_pass }}"
      backup_schedule:
        cron:
          hour: 21
          minute: 5
        s3_sync:
          src: "{{ barman_config['barman_home'] | default('/var/lib/barman') }}/{{ barman_name }}"
          dst: "s3://db-backup"
          base_cron:
            hour: 22
            minute: 5
          wals_cron:
            minute: 10
        custom:
          job: "barman delete '{{ barman_name }}' oldest"
          cron:
            hour: 23
            minute: 15
  roles:
  - giner.barman

Développement

Installez les dépendances de test :

python3 -m pip install ansible -Ur requirements-molecule.txt

Exécutez tous les tests (requiert l'installation de docker) :

molecule test --all

Licence

Apache 2.0

Auteurs

Ce rôle a été créé en 2021 par Stanislav German-Evtushenko

À propos du projet

Install and configure Barman on Linux with optional: metrics collection (telegraf), regular snapshots (cron) and uploading to S3 (cron)

Installer
ansible-galaxy install giner.barman
Licence
apache-2.0
Téléchargements
14.6k