add extras role
This commit is contained in:
7
roles/extras/tasks/alembic.yml
Normal file
7
roles/extras/tasks/alembic.yml
Normal 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
|
||||
29
roles/extras/tasks/appservice.yml
Normal file
29
roles/extras/tasks/appservice.yml
Normal 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
|
||||
63
roles/extras/tasks/general.yml
Normal file
63
roles/extras/tasks/general.yml
Normal 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
|
||||
12
roles/extras/tasks/main.yml
Normal file
12
roles/extras/tasks/main.yml
Normal 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
|
||||
11
roles/extras/tasks/maubot.yml
Normal file
11
roles/extras/tasks/maubot.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
|
||||
- name: Create required directories
|
||||
ansible.builtin.file:
|
||||
path: "/opt/maubot/{{ item }}"
|
||||
state: directory
|
||||
mode: 0755
|
||||
loop:
|
||||
- plugins
|
||||
- trash
|
||||
- logs
|
||||
15
roles/extras/tasks/mautrix-whatsapp.yml
Normal file
15
roles/extras/tasks/mautrix-whatsapp.yml
Normal 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'
|
||||
13
roles/extras/tasks/npm.yml
Normal file
13
roles/extras/tasks/npm.yml
Normal 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
|
||||
11
roles/extras/tasks/pip.yml
Normal file
11
roles/extras/tasks/pip.yml
Normal 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
|
||||
18
roles/extras/tasks/repo.yml
Normal file
18
roles/extras/tasks/repo.yml
Normal 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) }}"
|
||||
28
roles/extras/tasks/signald.yml
Normal file
28
roles/extras/tasks/signald.yml
Normal 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
|
||||
Reference in New Issue
Block a user