Files
seafile-mirror-ansible/tasks/main.yml
2023-05-26 11:04:55 +02:00

105 lines
3.2 KiB
YAML
Executable File

---
- name: Ensure local seafile user is configured correctly
include_role:
name: users
apply:
become: false
vars:
username: "{{ seafile_local_user.user }}"
password: "{{ seafile_local_user.pass | default('') }}"
- name: Ensure requirements are installed
apt:
name:
- moreutils # chronic
- python3-yaml
- systemd-container # necessary to use machinectl become_method
- seafile-cli
become: false # need to do this as root
- name: Register user info of {{ seafile_local_user.user }}
user:
name: "{{ seafile_local_user.user }}"
check_mode: true
register: seafile_local_user_info
- name: Define directory for Seafile mirror service as fact
set_fact:
seafile_mirror_dir: "{{ seafile_local_user_info.home }}/seafile_mirror"
- name: Ensure directory for Seafile mirror service exists
file:
path: "{{ seafile_mirror_dir }}/functions"
state: directory
mode: 0755
recurse: true
- name: Ensure Seafile mirror script and its functions exists
copy:
src: "seafile-mirror/{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0755
loop:
- {src: "seafile_mirror.py", dest: "{{ seafile_mirror_dir }}/"}
- {src: "functions/__init__.py", dest: '{{ seafile_mirror_dir }}/functions/'}
- {src: "functions/cachedb.py", dest: '{{ seafile_mirror_dir }}/functions/'}
- {src: "functions/helpers.py", dest: '{{ seafile_mirror_dir }}/functions/'}
- {src: "functions/seafile.py", dest: '{{ seafile_mirror_dir }}/functions/'}
- name: Ensure Seafile mirror configuration exists
template:
src: seafile_mirror.conf.yaml.j2
dest: "{{ seafile_mirror_dir }}/seafile_mirror.conf.yaml"
mode: 0600
- name: Ensure cron entry for Seafile mirror service
cron:
name: Seafile Mirror Service
job: "chronic python3 {{ seafile_mirror_dir }}/seafile_mirror.py -c {{ seafile_mirror_dir }} -v"
hour: "23"
minute: "20"
- name: Ensure user systemd directory exists
file:
path: "{{ seafile_local_user_info.home }}/.config/systemd/user/"
state: directory
mode: 0755
- name: Ensure systemd service file is present
template:
src: seaf-daemon.service.j2
dest: "{{ seafile_local_user_info.home }}/.config/systemd/user/seaf-daemon.service"
mode: 0644
- name: Ensure Seafile config dir exists
file:
path: "{{ seafile_local_user_info.home }}/config"
state: directory
mode: 0755
- name: Ensure Seafile config dir is initialised
command:
cmd: seaf-cli init -d "{{ seafile_local_user_info.home }}/config"
register: result
changed_when: '"already exists" not in result.stdout'
- name: "Check whether user is lingering: {{ seafile_local_user.user }}"
stat:
path: "/var/lib/systemd/linger/{{ seafile_local_user.user }}"
register: seafile_local_user_lingering
- name: Ensure systemd lingering is enabled for user {{ seafile_local_user.user }}
command: loginctl enable-linger {{ seafile_local_user.user }}
become: false
when: not seafile_local_user_lingering.stat.exists
- name: Ensure systemd service is running and enabled
systemd:
name: seaf-daemon
state: started
enabled: true
daemon_reload: true
scope: user
become_method: machinectl # in order to get XDG_RUNTIME_DIR and user's DBUS session