X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=playbooks%2Fdebian%2Fsa-merge-all.yaml;fp=playbooks%2Fdebian%2Fsa-merge-all.yaml;h=0fade9805c663b7c623b4b36245124ab09af34f2;hb=3c5ede3e8a061c1817c429a5332dcf7bc76ec415;hp=0000000000000000000000000000000000000000;hpb=45ba3bdce32ecc6f9f0ac031ccb799ed3157d6f9;p=ansible.git diff --git a/playbooks/debian/sa-merge-all.yaml b/playbooks/debian/sa-merge-all.yaml new file mode 100644 index 0000000..0fade98 --- /dev/null +++ b/playbooks/debian/sa-merge-all.yaml @@ -0,0 +1,57 @@ +- name: Merge SpamAssassin databases + hosts: "{{ hosts | default('all') }}" + gather_facts: false + tasks: + - block: + - name: Stop exim + become: true + service: + name: exim4 + state: stopped + - name: Stop SpamAssassin + become: true + service: + name: spamassassin + state: stopped + + - name: Backup SpamAssassin DB + shell: "sa-learn --sync && exec sa-learn --backup >~/tmp/sa-learn.backup@{{ inventory_hostname }}" + - name: Fetch SpamAssassin DB backup + ansible.posix.synchronize: + src: "~/tmp/sa-learn.backup@{{ inventory_hostname }}" + dest: "~/tmp/sa-learn.backup@{{ inventory_hostname }}" + mode: pull + when: inventory_hostname != 'localhost' + + - name: Combine SpamAssassin DB backups + shell: "exec {{ playbook_dir }}/sa-merge-all.py -o sa-learn.backup sa-learn.backup@*" + args: + chdir: "~/tmp" + when: inventory_hostname == 'localhost' + + - block: + - name: Push combined SpamAssassin DB backup + ansible.posix.synchronize: + src: "~/tmp/sa-learn.backup" + dest: "~/tmp/sa-learn.backup" + - name: Restore combined SpamAssassin DB + shell: "sa-learn --clear && sa-learn --restore sa-learn.backup && exec sa-learn --sync" + args: + chdir: "~/tmp" + + - name: Start SpamAssassin + become: true + service: + name: spamassassin + state: started + - name: Start exim + become: true + service: + name: exim4 + state: started + when: inventory_hostname != 'localhost' + + - name: Cleanup + shell: "exec rm sa-learn.backup*" + args: + chdir: "~/tmp"