]> git.phdru.name Git - ansible.git/blobdiff - playbooks/debian/sa-merge-all.yaml
Feat: Rename `*.yml` to `*.yaml`
[ansible.git] / playbooks / debian / sa-merge-all.yaml
diff --git a/playbooks/debian/sa-merge-all.yaml b/playbooks/debian/sa-merge-all.yaml
new file mode 100644 (file)
index 0000000..0fade98
--- /dev/null
@@ -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"