initial commit
This commit is contained in:
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "files/seafile-mirror"]
|
||||||
|
path = files/seafile-mirror
|
||||||
|
url = https://src.mehl.mx/mxmehl/seafile-mirror.git
|
||||||
1
files/seafile-mirror
Submodule
1
files/seafile-mirror
Submodule
Submodule files/seafile-mirror added at eaa92ea2d2
104
tasks/main.yml
Executable file
104
tasks/main.yml
Executable file
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
18
templates/seaf-daemon.service.j2
Executable file
18
templates/seaf-daemon.service.j2
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Seafile Daemon
|
||||||
|
After=network.target
|
||||||
|
After=nfs-client.target
|
||||||
|
StartLimitIntervalSec=60
|
||||||
|
StartLimitBurst=3
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/seaf-daemon -c {{ seafile_local_user_info.home }}/.ccnet -d {{ seafile_local_user_info.home }}/config/seafile-data -w {{ seafile_local_user_info.home }}/config/seafile
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
# Restart every day
|
||||||
|
RuntimeMaxSec=1d
|
||||||
|
SyslogIdentifier=seaf-daemon
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
1
templates/seafile_mirror.conf.yaml.j2
Executable file
1
templates/seafile_mirror.conf.yaml.j2
Executable file
@@ -0,0 +1 @@
|
|||||||
|
{{seafile_syncs|to_yaml(sort_keys=False)}}
|
||||||
Reference in New Issue
Block a user