Paillasse/ansible/roles/sauvegardes/tasks/main.yml

113 lines
3.2 KiB
YAML
Raw Normal View History

---
- 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 }}"