add extras role

This commit is contained in:
uumas
2023-04-19 01:45:05 +03:00
parent 70a4684f51
commit d05e42fe18
36 changed files with 1017 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
---
- name: Alembic update database
ansible.builtin.command: /opt/{{ matrix_extra }}/bin/alembic -c /opt/{{ matrix_extra }}/alembic.ini -x config=/opt/{{ matrix_extra }}/config.yaml upgrade head
args:
chdir: /opt/{{ matrix_extra }}
when: install.changed

View File

@@ -0,0 +1,29 @@
---
- name: Generate registration file for {{ matrix_extra }}
ansible.builtin.command: "{{ registrationgen_exec }}"
args:
chdir: "{{ matrix_extra_workdir }}"
notify: Restart matrix target
when: config.changed or install.changed
become_user: "{{ matrix_extra }}"
- name: Add appservice to synapse config - {{ matrix_extra }}
become_user: root
block:
- name: Ensure appservice config file present
ansible.builtin.lineinfile:
path: /etc/matrix-synapse/conf.d/appservice.yaml
line: 'app_service_config_files:'
regexp: '^app_service_config_files: *?$'
create: true
mode: 0644
insertbefore: BOF
notify: Restart synapse
- name: Configure appservice {{ matrix_extra }}
ansible.builtin.lineinfile:
path: '/etc/matrix-synapse/conf.d/appservice.yaml'
line: " - '/opt/{{ matrix_extra }}/appservice-registration.yaml'"
regexp: '^.*{{ matrix_extra }}.*$'
notify: Restart synapse

View File

@@ -0,0 +1,63 @@
---
- name: Include defaults
ansible.builtin.include_vars: defaults.yml
- name: Include variables for {{ matrix_extra }}
ansible.builtin.include_vars: "{{ matrix_extra }}.yml"
- name: Install dependencies for {{ matrix_extra }}
ansible.builtin.apt:
name: "{{ depends }}"
state: latest
- name: Install dependencies from custom repos for {{ matrix_extra }}
ansible.builtin.include_tasks: repo.yml
when: repo_depends is defined
loop: "{{ repo_depends }}"
- name: Create user for {{ matrix_extra }}
ansible.builtin.user:
name: "{{ matrix_extra }}"
system: true
home: /opt/{{ matrix_extra }}
shell: /bin/false
- name: Configure {{ matrix_extra }}
become_user: "{{ matrix_extra }}"
block:
- name: Put config in place for {{ matrix_extra }}
ansible.builtin.template:
src: "config/{{ matrix_extra }}.yaml.j2"
dest: "/opt/{{ matrix_extra }}/config.yaml.ansibled"
mode: 0644
backup: true
notify: Restart matrix target
register: config
- name: Put config in final destination for {{ matrix_extra }}
ansible.builtin.copy:
src: "/opt/{{ matrix_extra }}/config.yaml.ansibled"
dest: "/opt/{{ matrix_extra }}/config.yaml"
mode: 0644
remote_src: true
when: config.changed
- name: Include service-specific tasks
ansible.builtin.include_tasks: "{{ tasks }}.yml"
loop: "{{ matrix_extra_tasks }}"
loop_control:
loop_var: tasks
- name: Put systemd unit in place for {{ matrix_extra }}
ansible.builtin.template:
src: 'matrix-extra.service'
dest: "/etc/systemd/system/{{ matrix_extra }}.service"
mode: 0644
register: systemd_unit
- name: Enable systemd unit {{ matrix_extra }}
ansible.builtin.systemd:
daemon_reload: true
name: "{{ matrix_extra }}.service"
enabled: true
state: restarted
when: systemd_unit.changed

View File

@@ -0,0 +1,12 @@
---
- name: Install common dependencies for matrix-extras
ansible.builtin.apt:
name:
- libolm-dev
- name: Include general tasks for each extra
ansible.builtin.include_tasks: general.yml
loop: "{{ matrix_extras }}"
loop_control:
loop_var: matrix_extra

View File

@@ -0,0 +1,11 @@
---
- name: Create required directories
ansible.builtin.file:
path: "/opt/maubot/{{ item }}"
state: directory
mode: 0755
loop:
- plugins
- trash
- logs

View File

@@ -0,0 +1,15 @@
---
- name: Install latest mautrix-whatsapp release from github releases
ansible.builtin.get_url:
url: 'https://github.com/mautrix/whatsapp/releases/latest/download/mautrix-whatsapp-amd64'
dest: "/opt/mautrix-whatsapp/mautrix-whatsapp"
mode: '755'
- name: Include appservice tasks
ansible.builtin.import_tasks: appservice.yml
- name: Chmod registration file
ansible.builtin.file:
path: /opt/mautrix-whatsapp/appservice-registration.yaml
mode: '0644'

View File

@@ -0,0 +1,13 @@
---
- name: Clone git repo for {{ matrix_extra }}
ansible.builtin.git:
repo: "{{ matrix_extra_git_repo }}"
dest: /opt/{{ matrix_extra }}/src
force: true
- name: Install {{ matrix_extra }}
community.general.npm:
path: /opt/{{ matrix_extra }}/src
register: install
notify: Restart matrix target

View File

@@ -0,0 +1,11 @@
---
- name: Install {{ matrix_extra }}
ansible.builtin.pip:
chdir: '/opt/{{ matrix_extra }}'
name: "{{ pip_packages }}"
state: latest
virtualenv: "/opt/{{ matrix_extra }}"
virtualenv_python: '/usr/bin/python3'
register: install
notify: Restart matrix target

View File

@@ -0,0 +1,18 @@
---
- name: Add apt key {{ item.repo }}
ansible.builtin.apt_key:
id: "{{ matrix_extra_repos[item.repo].key.id }}"
url: "{{ matrix_extra_repos[item.repo].key.url }}"
when: matrix_extra_repos[item.repo].key is defined
- name: Add repo {{ item.repo }}
ansible.builtin.apt_repository:
repo: "{{ matrix_extra_repos[item.repo].repo }}"
filename: "{{ item.repo }}"
mode: '644'
- name: Install dependencies from {{ item.repo }}
ansible.builtin.apt:
name: "{{ item.packages }}"
default_release: "{{ matrix_extra_repos[item.repo].default_release | default(omit) }}"

View File

@@ -0,0 +1,28 @@
---
- name: Add user to signald group - {{ matrix_extra }}
ansible.builtin.user:
name: "{{ matrix_extra }}"
groups: signald
append: true
become_user: root
- name: Set signald directory permissions
ansible.builtin.file:
path: /var/lib/signald/{{ item }}
state: directory
owner: signald
group: signald
mode: 0770
loop:
- data
- attachments
- avatars
become_user: signald
- name: Copy /etc/default/signald env
ansible.builtin.template:
src: signald-env
dest: /etc/default/signald
mode: 0755
become_user: root