--- # L'ETAT D'UNE INCARNATION PRECEDENTE — voir roles/client_backup/templates/restaurer.sh.j2 # # make restauration-etat [HOTE=...] # ce qui attend dans le depot, et ce que chaque jeu est devenu (lecture seule) ; # make sauvegarder-maintenant [HOTE=...] # deposer TOUT DE SUITE, et attendre que ce soit fait. A faire juste avant `raser` : # sinon la reconstruction remet l'etat de la derniere nuit, et perd la journee ; # make restauration-renoncer HOTE= JEU= CONFIRMER=true # ECARTER un etat anterieur sans le remettre. La sauvegarde du noeud, qui refusait # de deposer pour ne pas le chasser de la retention, reprend — et l'etat d'avant # finira par sortir de la retention. C'est une decision, pas une reparation. # # La REMISE, elle, n'a pas de cible : elle est faite par le role proprietaire de l'etat, # au deploiement, au moment ou il le creerait neuf. - name: L'etat d'une incarnation precedente hosts: client_backup become: true gather_facts: false vars: restauration_action: etat restauration_jeu: "" tasks: - name: Refuser un renoncement sans jeu nomme ansible.builtin.assert: that: - restauration_jeu | length > 0 fail_msg: "JEU= requis (voir `make restauration-etat` pour les noms)." when: restauration_action == 'renoncer' - name: Lire ce qui attend, et ce qui a ete tranche ansible.builtin.command: argv: [/usr/local/sbin/setops-restaurer, etat] register: restauration_lue changed_when: false failed_when: false when: restauration_action == 'etat' - name: Etat ansible.builtin.debug: msg: "{{ (restauration_lue.stdout_lines | default([])) + (restauration_lue.stderr_lines | default([])) }}" when: restauration_action == 'etat' # L'unite est `oneshot` : `systemctl start` rend la main quand le depot est fait, et # echoue s'il a echoue — y compris quand la garde refuse (etat d'avant non remis). - name: Ce noeud a-t-il quelque chose a deposer ? ansible.builtin.stat: path: /etc/systemd/system/setops-sauvegarde.service register: restauration_unite when: restauration_action == 'sauvegarder' - name: Deposer maintenant ansible.builtin.systemd: name: setops-sauvegarde.service state: started when: - restauration_action == 'sauvegarder' - restauration_unite.stat.exists - name: Ecarter l'etat anterieur de ce jeu ansible.builtin.command: argv: [/usr/local/sbin/setops-restaurer, acter, "{{ restauration_jeu }}", abandonne] changed_when: true when: restauration_action == 'renoncer'