Paillasse/ansible/roles/sauvegardes/tasks/main.yml
Adam Belkacemi 3f0b565e1e sauvegarde la base du portail et teste sa restauration chaque semaine
La sauvegarde ne couvrait que /etc, /home et /root : la base MariaDB du
portail et son .env (APP_KEY) en étaient absents. Ajoute aussi le réglage
du quota et du gabarit du projet des labs dans Ansible, la reprise des VM
au démarrage de l'hôte (Nova), et le script du test de capacité.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:28:50 +02:00

112 lines
3.2 KiB
YAML

---
- name: installer age et lftp
ansible.builtin.apt:
name:
- age
- lftp
state: present
update_cache: true
cache_valid_time: 3600
- name: créer le répertoire de la clé age
ansible.builtin.file:
path: "{{ sauvegardes_age_dir }}"
state: directory
owner: root
group: root
mode: "0700"
- name: générer la paire de clés age (si absente)
ansible.builtin.command:
cmd: "age-keygen -o {{ sauvegardes_age_cle }}"
creates: "{{ sauvegardes_age_cle }}"
- name: restreindre les permissions de la clé privée age
ansible.builtin.file:
path: "{{ sauvegardes_age_cle }}"
owner: root
group: root
mode: "0600"
- name: lire la clé publique age (pour affichage, jamais la clé privée)
ansible.builtin.command:
cmd: "grep -oP '(?<=public key: )age1\\S+' {{ sauvegardes_age_cle }}"
register: sauvegardes_age_pub
changed_when: false
- name: déployer le script de sauvegarde
ansible.builtin.template:
src: sauvegarde-dedibackup.sh.j2
dest: /usr/local/sbin/sauvegarde-dedibackup.sh
owner: root
group: root
mode: "0700"
- name: déployer le service systemd
ansible.builtin.template:
src: sauvegarde-dedibackup.service.j2
dest: /etc/systemd/system/sauvegarde-dedibackup.service
mode: "0644"
notify: recharger systemd
- name: déployer le timer systemd
ansible.builtin.template:
src: sauvegarde-dedibackup.timer.j2
dest: /etc/systemd/system/sauvegarde-dedibackup.timer
mode: "0644"
notify: recharger systemd
- name: déployer le test de restauration du portail (étape 13)
ansible.builtin.template:
src: syllabus-test-restauration.sh.j2
dest: /usr/local/sbin/syllabus-test-restauration
owner: root
group: root
mode: "0700"
- name: déployer le service et le minuteur du test de restauration
ansible.builtin.copy:
dest: "/etc/systemd/system/syllabus-test-restauration.{{ item.type }}"
mode: "0644"
content: "{{ item.contenu }}"
loop:
- type: service
contenu: |
# Géré par Ansible (rôle sauvegardes).
[Unit]
Description=Test de restauration de la dernière sauvegarde du portail
After=docker.service network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/syllabus-test-restauration
- type: timer
contenu: |
# Géré par Ansible (rôle sauvegardes).
[Unit]
Description=Test de restauration hebdomadaire du portail
[Timer]
OnCalendar={{ sauvegardes_test_restauration_quand }}
Persistent=true
[Install]
WantedBy=timers.target
notify: recharger systemd
- name: appliquer les changements systemd
ansible.builtin.meta: flush_handlers
- name: activer et démarrer le timer de sauvegarde
ansible.builtin.systemd:
name: sauvegarde-dedibackup.timer
enabled: true
state: started
- name: activer le minuteur du test de restauration
ansible.builtin.systemd:
name: syllabus-test-restauration.timer
enabled: true
state: started
- name: afficher la clé publique age (à connaître, jamais la privée)
ansible.builtin.debug:
msg: "Clé publique age du serveur : {{ sauvegardes_age_pub.stdout }}"