rclone: Make role more modular
This commit is contained in:
parent
c3497c2440
commit
338f4e2f0d
4 changed files with 42 additions and 29 deletions
|
@ -3,13 +3,19 @@
|
||||||
set -eu
|
set -eu
|
||||||
umask 027
|
umask 027
|
||||||
|
|
||||||
TARGET="/srv/backup"
|
SERVICE="$(whoami)"
|
||||||
CONFIG="/etc/rclone/rclone.conf"
|
|
||||||
LOGDIR="/var/log/rclone"
|
TARGET="/srv/${SERVICE}"
|
||||||
|
CONFIG="/etc/rclone/${SERVICE}.conf"
|
||||||
|
LOGDIR="/var/log/rclone/${SERVICE}"
|
||||||
RCLONE="/usr/local/bin/rclone"
|
RCLONE="/usr/local/bin/rclone"
|
||||||
|
|
||||||
timestamp="$(date +%Y%m%d%H%M%S)"
|
timestamp="$(date +%Y%m%d%H%M%S)"
|
||||||
|
|
||||||
|
if [ ! -f "$CONFIG" ]; then
|
||||||
|
echo "ERR: Config file '${CONFIG}' does not exist" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
if [ ! -d "$TARGET" ]; then
|
if [ ! -d "$TARGET" ]; then
|
||||||
echo "ERR: Destination directory '${TARGET}' does not exist" 1>&2
|
echo "ERR: Destination directory '${TARGET}' does not exist" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
---
|
---
|
||||||
dependencies:
|
dependencies:
|
||||||
- {role: backup_base}
|
|
||||||
- {role: ssh_known_hosts}
|
- {role: ssh_known_hosts}
|
||||||
|
|
|
@ -8,17 +8,17 @@
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /etc/rclone
|
path: /etc/rclone
|
||||||
state: directory
|
state: directory
|
||||||
mode: "0770"
|
mode: "0755"
|
||||||
owner: root
|
owner: root
|
||||||
group: backup
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
- name: Create host config
|
- name: Create host config
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
dest: /etc/rclone/rclone.conf
|
dest: "/etc/rclone/{{ rclone_service }}.conf"
|
||||||
src: rclone.conf.j2
|
src: rclone.conf.j2
|
||||||
mode: "0640"
|
mode: "0640"
|
||||||
owner: root
|
owner: root
|
||||||
group: backup
|
group: "{{ rclone_service }}"
|
||||||
|
|
||||||
- name: Create ssh keys
|
- name: Create ssh keys
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
|
@ -27,45 +27,53 @@
|
||||||
- -t
|
- -t
|
||||||
- ed25519
|
- ed25519
|
||||||
- -C
|
- -C
|
||||||
- "backup@{{ inventory_hostname }}"
|
- "{{ rclone_service }}@{{ inventory_hostname }}"
|
||||||
- -N
|
- -N
|
||||||
- ""
|
- ""
|
||||||
- -f
|
- -f
|
||||||
- /etc/rclone/id_ed25519
|
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
|
||||||
creates: /etc/rclone/id_ed25519
|
creates: "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
|
||||||
|
|
||||||
- name: Fix ssh key permissions
|
- name: Fix ssh key permissions
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
owner: root
|
owner: root
|
||||||
group: backup
|
group: "{{ rclone_service }}"
|
||||||
mode: "0640"
|
mode: "0640"
|
||||||
with_items:
|
with_items:
|
||||||
- /etc/rclone/id_ed25519
|
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key"
|
||||||
- /etc/rclone/id_ed25519.pub
|
- "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key.pub"
|
||||||
|
|
||||||
- name: Fetch ssh public key
|
- name: Fetch ssh public key
|
||||||
ansible.builtin.fetch:
|
ansible.builtin.fetch:
|
||||||
src: /etc/rclone/id_ed25519.pub
|
src: "/etc/rclone/ssh_{{ rclone_service }}_ed25519_key.pub"
|
||||||
dest: ../files/ssh/backup.pub
|
dest: "../files/ssh/{{ rclone_service }}.pub"
|
||||||
flat: true
|
flat: true
|
||||||
|
|
||||||
- name: Create log directory
|
- name: Create base log directory
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /var/log/rclone
|
path: /var/log/rclone
|
||||||
state: directory
|
state: directory
|
||||||
mode: "0750"
|
mode: "0755"
|
||||||
owner: backup
|
owner: root
|
||||||
group: backup
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
- name: Create backup directories
|
- name: Create log directory
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/srv/backup/{{ item }}"
|
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
|
state: directory
|
||||||
mode: "0770"
|
mode: "0770"
|
||||||
owner: root
|
owner: root
|
||||||
group: backup
|
group: "{{ rclone_service }}"
|
||||||
with_items: "{{ groups['sftpbackup'] }}"
|
with_items: "{{ groups[rclone_hostgroup | default(rclone_service)] }}"
|
||||||
|
|
||||||
- name: Copy rclone sync script
|
- name: Copy rclone sync script
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
|
@ -79,13 +87,13 @@
|
||||||
ansible.builtin.cron:
|
ansible.builtin.cron:
|
||||||
name: MAILTO
|
name: MAILTO
|
||||||
env: true
|
env: true
|
||||||
user: backup
|
user: "{{ rclone_service }}"
|
||||||
value: root
|
value: root
|
||||||
|
|
||||||
- name: Add rclone sync cron job
|
- name: Add rclone sync cron job
|
||||||
ansible.builtin.cron:
|
ansible.builtin.cron:
|
||||||
name: rclone-sync
|
name: rclone-sync
|
||||||
user: backup
|
user: "{{ rclone_service }}"
|
||||||
hour: "3"
|
hour: "3"
|
||||||
minute: "00"
|
minute: "00"
|
||||||
job: /usr/local/bin/rclone-sync
|
job: /usr/local/bin/rclone-sync
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# {{ ansible_managed }}
|
# {{ ansible_managed }}
|
||||||
{% for host in groups['sftpbackup'] %}
|
{% for host in groups[rclone_hostgroup | default(rclone_service)] %}
|
||||||
|
|
||||||
[{{ host.split('.')[0] }}]
|
[{{ host.split('.')[0] }}]
|
||||||
type = sftp
|
type = sftp
|
||||||
host = {{ host }}
|
host = {{ host }}
|
||||||
user = backup
|
user = {{ rclone_service }}
|
||||||
shell_type = none
|
shell_type = none
|
||||||
key_file = /etc/rclone/id_ed25519
|
key_file = /etc/rclone/ssh_{{ rclone_service }}_ed25519_key
|
||||||
known_hosts_file = /etc/ssh/ssh_known_hosts
|
known_hosts_file = /etc/ssh/ssh_known_hosts
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue