ansible/roles/rclone/tasks/main.yml

99 lines
2.3 KiB
YAML

---
- name: Install packages
ansible.builtin.package:
name: rclone
state: installed
- name: Create config directory
ansible.builtin.file:
path: /etc/rclone
state: directory
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Create host config
ansible.builtin.template:
dest: "/etc/rclone/{{ rclone_service }}.conf"
src: rclone.conf.j2
mode: "0640"
owner: root
group: "{{ rclone_service }}"
- name: Create ssh keys
ansible.builtin.command:
argv:
- ssh-keygen
- -t
- ed25519
- -C
- "{{ rclone_service }}@{{ inventory_hostname }}"
- -N
- ""
- -f
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
creates: "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
- name: Fix ssh key permissions
ansible.builtin.file:
path: "{{ item }}"
owner: root
group: "{{ rclone_service }}"
mode: "0640"
with_items:
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key.pub"
- name: Fetch ssh public key
ansible.builtin.fetch:
src: "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key.pub"
dest: "../files/ssh/{{ rclone_service }}.pub"
flat: true
- name: Create base log directory
ansible.builtin.file:
path: /var/log/rclone
state: directory
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Create log directory
ansible.builtin.file:
path: "/var/log/rclone/{{ rclone_service }}"
state: directory
mode: "0750"
owner: "{{ rclone_service }}"
group: "{{ rclone_service }}"
- name: Create data directories
ansible.builtin.file:
path: "/srv/{{ rclone_service }}/{{ item }}"
state: directory
mode: "0770"
owner: root
group: "{{ rclone_service }}"
with_items: "{{ groups[rclone_hostgroup | default(rclone_service)] }}"
- name: Copy rclone sync script
ansible.builtin.copy:
dest: /usr/local/bin/rclone-sync
src: rclone-sync.sh
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Redirect cron job mail
ansible.builtin.cron:
name: MAILTO
env: true
user: "{{ rclone_service }}"
value: root
- name: Add rclone sync cron job
ansible.builtin.cron:
name: rclone-sync
user: "{{ rclone_service }}"
hour: "3"
minute: "00"
job: /usr/local/bin/rclone-sync