# 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 - pipx - systemd-container # necessary to use machinectl become_method - seafile-cli become: false # need to do this as root - name: Install seafile-mirror with pipx command: pipx install seafile-mirror changed_when: false - name: Upgrade seafile-mirror with pipx command: pipx upgrade seafile-mirror changed_when: false - 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 }}" state: directory mode: "0755" recurse: true - 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 pipx run seafile-mirror -c {{ seafile_mirror_dir }}" 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 changed_when: 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: community.general.machinectl # in order to get XDG_RUNTIME_DIR and user's DBUS session