diff options
Diffstat (limited to 'ansible/roles/borg-client/tasks/borg-client.yml')
-rw-r--r-- | ansible/roles/borg-client/tasks/borg-client.yml | 113 |
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 |