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>
112 lines
3.2 KiB
YAML
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 }}"
|