# SPDX-FileCopyrightText: 2023 Max Mehl # # SPDX-License-Identifier: Apache-2.0 --- - 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