infra/install_etebase.yml
2025-02-18 23:33:30 +02:00

105 lines
2.8 KiB
YAML

---
- name: Install Etebase server
hosts: ulna
tasks:
- name: Python3 and virtualenv
ansible.builtin.apt:
name: python3-virtualenv
state: present
become: true
- name: Create etebase group
ansible.builtin.group:
name: etebase
state: present
become: true
- name: Create etebase user
ansible.builtin.user:
name: etebase
group: etebase
comment: Etebase user
password: '!'
system: true
home: "{{ etebase_home_dir }}"
state: present
become: true
- name: Clone etebase repo
ansible.builtin.git:
repo: "https://github.com/etesync/server.git"
dest: "{{ etebase_home_dir }}/etebase"
single_branch: true
force: true
become: true
become_user: etebase
- name: Install etebase python requirements
ansible.builtin.pip:
requirements: "{{ etebase_home_dir }}/etebase/requirements.txt"
virtualenv: "{{ etebase_home_dir }}/venv"
state: present
become: true
become_user: etebase
- name: Install uvicorn inside venv
ansible.builtin.pip:
name: "uvicorn[standard]"
virtualenv: "{{ etebase_home_dir }}/venv"
state: present
become: true
become_user: etebase
- name: Setup configuration
ansible.builtin.template:
src: "templates/etebase-server.ini.j2"
dest: "{{ etebase_home_dir }}/etebase/etebase-server.ini"
mode: "0640"
group: etebase
owner: etebase
become: true
become_user: etebase
- name: Create directories
ansible.builtin.file:
path: "{{ item.dir }}"
mode: "{{ item.mode }}"
owner: etebase
group: "{{ item.group | default('etebase') }}"
state: directory
loop:
- { dir: "{{ etebase_home_dir }}/media", mode: "0750" }
- { dir: "{{ etebase_home_dir }}/secret", mode: "0750" }
- { dir: "{{ etebase_home_dir }}/static", mode: "0750", group: "www-data" }
- { dir: "/var/run/etebase", mode: "0750", group: "www-data" }
become: true
- name: Run manage.py migrate
ansible.builtin.command:
cmd: "{{ etebase_home_dir }}/venv/bin/python3 ./manage.py migrate"
chdir: "{{ etebase_home_dir }}/etebase"
become: true
become_user: etebase
# FIXME: Stuck?
# - name: Run manage.py collectstatic
# ansible.builtin.command:
# cmd: "{{ etebase_home_dir }}/venv/bin/python3 ./manage.py collectstatic"
# chdir: "{{ etebase_home_dir }}/etebase"
# become: true
# become_user: etebase
- name: Setup systemd service
ansible.builtin.template:
src: "templates/etebase.service.j2"
dest: "/etc/systemd/system/etebase.service"
become: true
- name: (Re)start the systemd service
ansible.builtin.systemd:
state: restarted
name: etebase
enabled: true
daemon_reload: true
become: true