aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/borg-client/tasks/borg-client.yml
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/roles/borg-client/tasks/borg-client.yml')
-rw-r--r--ansible/roles/borg-client/tasks/borg-client.yml113
1 files changed, 113 insertions, 0 deletions
diff --git a/ansible/roles/borg-client/tasks/borg-client.yml b/ansible/roles/borg-client/tasks/borg-client.yml
new file mode 100644
index 0000000..97c4ec4
--- /dev/null
+++ b/ansible/roles/borg-client/tasks/borg-client.yml
@@ -0,0 +1,113 @@
+---
+- name: packages
+ tags: packages
+ apt:
+ name: "{{ items }}"
+ install_recommends: no
+ vars:
+ items:
+ - borgbackup
+
+- name: mkdir /etc/borg
+ file:
+ path: /etc/borg
+ state: directory
+ mode: u=rwx,go=
+
+- name: Generate SSH keys
+ command: ssh-keygen -t ed25519 -N "" -f "{{ ssh_key }}" -C "for borg @ {{ ansible_hostname }}"
+ args:
+ creates: "{{ ssh_key }}"
+ register: ssh_key_generated
+
+- when: ssh_key_generated.changed
+ fetch:
+ src: "{{ ssh_key }}.pub"
+ dest: "files"
+
+- name: /etc/borg/env
+ copy:
+ dest: /etc/borg/env
+ mode: u=r,go=
+ content: |
+ BORG_REPO="borg@{{ borg_client__server }}:{{ ansible_hostname }}"
+ BORG_RSH="ssh -i {{ ssh_key}}"
+
+# "
+
+- name: /etc/borg/excludes
+ when: borg_client__state == "absent"
+ file:
+ path: /etc/borg/excludes
+ state: absent
+
+- name: /etc/borg/excludes
+ when: borg_client__state == "present"
+ copy:
+ dest: /etc/borg/excludes
+ content: |
+ /proc
+ /dev
+ /sys
+ /run
+
+- name: /etc/borg/patterns
+ copy:
+ dest: /etc/borg/patterns
+ content: |
+ P sh
+ R /
+ {% for item in borg_client__patterns %}
+ {{ item }}
+ {% endfor %}
+
+- name: /usr/local/bin/create-backup
+ template:
+ dest: "/usr/local/bin/{{ item }}"
+ src: "bin/{{ item }}"
+ mode: u=rwx,go=rx
+ owner: root
+ group: root
+ with_items:
+ - create-backup
+ - create-backup-send-email
+
+- name: /etc/systemd/system/create-backup.service
+ copy:
+ dest: /etc/systemd/system/create-backup.service
+ content: |
+ [Unit]
+ Description=Create backup
+
+ [Service]
+ Type=oneshot
+ WorkingDirectory=/
+ ExecStart=-/usr/local/bin/create-backup
+ ExecStartPost=-/usr/local/bin/create-backup-send-email root@trygvis.io
+ SuccessExitStatus=0 1
+ notify:
+ - systemd daemon-reload
+
+- name: /etc/systemd/system/create-backup.timer
+ copy:
+ dest: /etc/systemd/system/create-backup.timer
+ content: |
+ [Unit]
+ Description=Create backup timer
+
+ [Timer]
+ OnCalendar=05:24
+
+ [Install]
+ WantedBy=timers.target
+ notify:
+ - systemd daemon-reload
+ - service start create-backup.timer
+
+# TODO: remove
+- file:
+ path: /etc/systemd/system/create-backup-send-email.service
+ state: absent
+ register: create_backup_send_email_service
+ notify:
+ - systemd daemon-reload