yurihs.postgres_backup
Rôle Ansible : Sauvegardes Postgres
- Installe un script pour sauvegarder les bases de données PostgreSQL.
- Supporte la sauvegarde de plusieurs hôtes.
- Gère les entrées cron pour une exécution régulière.
Qu'est-ce qui est sauvegardé ?
- Objets globaux (rôles et tablespaces), compressés avec gzip. Peut être désactivé. Équivalent à
pg_dumpall --globals-only | gzip
- Toutes les bases de données lisibles, dans des fichiers séparés, en utilisant le format "personnalisé" de PostgreSQL. Équivalent à
pg_dump --format=custom base_de_données
Variables du rôle (valeurs par défaut)
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
do_backup_globals: true
cron:
minute: '0'
hour: '*'
day: '*'
month: '*'
weekday: '*'
Quelles instances PostgreSQL sauvegarder (informations de connexion) et (facultativement) à quelle fréquence.
Ces entrées sont stockées dans des fichiers de configuration, donc vous devez tenir compte des implications de sécurité de stocker des mots de passe en clair (si vous les spécifiez en utilisant pg_password
, voir les exemples ci-dessous). Par défaut, ces fichiers ne seront lisibles que par leur propriétaire (généralement root
).
Lors de la suppression d'un élément de la liste, n'oubliez pas de modifier l'utilisation du paramètre state
pour supprimer le fichier de configuration et la tâche cron du système (voir les exemples ci-dessous).
postgres_backup_config_dir: /etc/postgres_backup
Où stocker la configuration.
postgres_backup_default_output_dir: /srv/postgres_backup
Où stocker les sauvegardes. Chaque entrée aura son propre répertoire à l'intérieur. Cette variable peut être remplacée par chaque entrée de la liste de sauvegarde.
postgres_backup_default_date_format: "%Y-%m-%d_%H-%M"
Comment formater le répertoire de sortie pour chaque sauvegarde. Peut être remplacé par chaque entrée de la liste de sauvegarde.
Exemples
Sauvegarde horaire d'un serveur PostgreSQL local
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
do_backup_globals: true
cron:
minute: '0'
hour: '*'
day: '*'
month: '*'
weekday: '*'
Cette configuration aboutira à la structure suivante :
/srv/
postgres_backup/
default/
2019-01-01_00-00/
globals.sql.gz
base-a.custom
base-b.custom
2019-01-01_01-00/
globals.sql.gz
base-a.custom
base-b.custom
Pas de sauvegardes automatiques, juste installer le script et la configuration
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
Sauvegarde quotidienne d'un serveur distant, en utilisant un mot de passe, et sortie dans un répertoire différent
postgres_backup_list:
- name: production
pg_username: backup
pg_password: "hunter2"
pg_hostname: db.example.com
pg_port: 5432
do_backup_globals: false
output_dir: /opt/prod_db_bak
cron:
minute: '0'
hour: '0'
day: '*'
month: '*'
weekday: '*'
Cette configuration aboutira à la structure suivante :
/opt/
prod_db_bak/
2019-01-01_00-00/
utilisateurs.custom
posts.custom
2019-01-02_00-00/
utilisateurs.custom
posts.custom
Supprimer une configuration précédemment définie
postgres_backup_list:
- name: production
state: absent
ansible-galaxy install yurihs.postgres_backup