ansible-roles/roles/jitsi/tasks/install.yml

226 lines
7.1 KiB
YAML

---
- name: Install dependencies
yum:
name:
- java-11-openjdk-devel
- git
- nodejs # needed to build meet
- libXScrnSaver # needed for jigasi
- python3 # needed for confmapper
- make
tags: jitsi
- name: Detect exact JRE version
command: rpm -q java-11-openjdk
changed_when: False
register: jitsi_jre11_version
tags: jitsi
- name: Select JRE 11 as default version
alternatives:
name: "{{ item.name }}"
link: "{{ item.link }}"
path: "{{ item.path }}"
loop:
- name: java
link: /usr/bin/java
path: /usr/lib/jvm/{{ jitsi_jre11_version.stdout | trim }}/bin/java
- name: javac
link: /usr/bin/javac
path: /usr/lib/jvm/{{ jitsi_jre11_version.stdout | trim }}/bin/javac
- name: jre_openjdk
link: /usr/lib/jvm/jre-openjdk
path: /usr/lib/jvm/{{ jitsi_jre11_version.stdout | trim }}
- name: java_sdk_openjdk
link: /usr/lib/jvm/java-openjdk
path: /usr/lib/jvm/{{ jitsi_jre11_version.stdout | trim }}
tags: jitsi
# If you use an Let's Encrypt cert, it might not be there yet. In this case, create a link
# to the default prosody cert so the service can be started. The cert will be obtained after that and
# will override the links
- name: Link cert to the default one
file: path={{ jitsi_cert_path }} src=/etc/prosody/certs/localhost.crt state=link
when: not jitsi_cert_file.stat.exists
tags: jitsi
- name: Link key to the default one
file: path={{ jitsi_key_path }} src=/etc/prosody/certs/localhost.key state=link
when: not jitsi_key_file.stat.exists
tags: jitsi
# This file used to contain proxy settings for maven
# now this is handled in a maven general dir, so remove it from here
- name: Remove local maven configuration
file: path={{ jitsi_root_dir }}/.m2/settings.xml state=absent
tags: jitsi
# Now, for every component, we will clone or update the repo.
# If the repo changed since the last run, we rebuild and restart the corresponding component
- name: Clone jicofo repo
git:
repo: "{{ jitsi_jicofo_git_url }}"
dest: "{{ jitsi_root_dir }}/src/jicofo"
force: True
depth: 1
single_branch: True
become_user: "{{ jitsi_user }}"
register: jitsi_jicofo_git
tags: jitsi
- name: Install or update jicofo
block:
- name: Build jicofo
command: /opt/maven/apache-maven/bin/mvn package -DskipTests -Dassembly.skipAssembly=false
args:
chdir: "{{ jitsi_root_dir }}/src/jicofo"
become_user: "{{ jitsi_user }}"
- name: Extract jicofo archive
unarchive:
src: "{{ jitsi_root_dir }}/src/jicofo/jicofo/target/jicofo-1.1-SNAPSHOT-archive.zip"
dest: "{{ jitsi_root_dir }}/tmp/"
remote_src: True
- name: Move jicofo to its final directory
synchronize:
src: "{{ jitsi_root_dir }}/tmp/jicofo-1.1-SNAPSHOT/"
dest: "{{ jitsi_root_dir }}/jicofo/"
recursive: True
delete: True
compress: False
delegate_to: "{{ inventory_hostname }}"
notify: restart jitsi-jicofo
when: (jitsi_jicofo_git.changed and jitsi_manage_upgrade) or not jitsi_jicofo_script.stat.exists
tags: jitsi
- name: Clone jigasi repo
git:
repo: "{{ jitsi_jigasi_git_url }}"
dest: "{{ jitsi_root_dir }}/src/jigasi"
force: True
depth: 1
single_branch: True
become_user: "{{ jitsi_user }}"
register: jitsi_jigasi_git
tags: jitsi
- name: Install or update jigasi
block:
- name: Build jigasi
command: /opt/maven/apache-maven/bin/mvn package -DskipTests -Dassembly.skipAssembly=false
args:
chdir: "{{ jitsi_root_dir }}/src/jigasi"
become_user: "{{ jitsi_user }}"
- name: Extract jigasi archive
unarchive:
src: "{{ jitsi_root_dir }}/src/jigasi/target/jigasi-linux-x64-1.1-SNAPSHOT.zip"
dest: "{{ jitsi_root_dir }}/tmp/"
remote_src: True
# - name: Link libunix-java lib
# file: src=libunix-0.5.1.so dest={{ jitsi_root_dir }}/tmp/jigasi-linux-x64-1.1-SNAPSHOT/lib/libunix-java.so state=link
- name: Move jigasi to its final directory
synchronize:
src: "{{ jitsi_root_dir }}/tmp/jigasi-linux-x64-1.1-SNAPSHOT/"
dest: "{{ jitsi_root_dir }}/jigasi/"
recursive: True
delete: True
compress: False
delegate_to: "{{ inventory_hostname }}"
notify: restart jitsi-jigasi
when: (jitsi_jigasi_git.changed and jitsi_manage_upgrade) or not jitsi_jigasi_script.stat.exists
tags: jitsi
- name: Deploy systemd unit
template: src={{ item }}.service.j2 dest=/etc/systemd/system/{{ item }}.service
loop:
- jitsi-jicofo
- jitsi-jigasi
- jitsi-confmapper
register: jitsi_units
notify:
- restart jitsi-jicofo
- restart jitsi-jigasi
- restart jitsi-confmapper
tags: jitsi
- name: Reload systemd
systemd: daemon_reload=True
when: jitsi_units.results | selectattr('changed', 'equalto', True) | list | length > 0
tags: jitsi
- name: Clone jitsi meet
git:
repo: "{{ jitsi_meet_git_url }}"
dest: "{{ jitsi_root_dir }}/src/meet"
force: True
depth: 1
single_branch: True
register: jitsi_meet_git
become_user: "{{ jitsi_user }}"
tags: jitsi
- name: Install or update jitsi meet
block:
- name: Clear node_modules cache
file: path={{ jitsi_root_dir }}/src/meet/node_modules state=absent
- name: Install jitsi meet node dependencies
npm: path={{ jitsi_root_dir }}/src/meet
become_user: "{{ jitsi_user }}"
- name: Build jitsi meet
command: make
args:
chdir: "{{ jitsi_root_dir }}/src/meet"
become_user: "{{ jitsi_user }}"
#- name: Reset git (so next run won't detect a change)
# command: git checkout {{ jitsi_root_dir }}/src/meet/resources/load-test/package-lock.json
# changed_when: False
# args:
# chdir: "{{ jitsi_root_dir }}/src/meet"
# become_user: "{{ jitsi_user }}"
- name: Deploy new jitsi meet version
shell: |
rm -rf {{ jitsi_root_dir }}/meet/*
mkdir -p {{ jitsi_root_dir }}/meet/css
cp -r *.js *.html resources/*.txt connection_optimization favicon.ico fonts images libs static sounds LICENSE lang {{ jitsi_root_dir }}/meet/
cp css/all.css {{ jitsi_root_dir }}/meet/css/
args:
chdir: "{{ jitsi_root_dir }}/src/meet"
when: (jitsi_meet_git.changed and jitsi_manage_upgrade) or not jitsi_meet_index.stat.exists
tags: jitsi
- name: Update languages
include_tasks: update_lang.yml
loop: "{{ jitsi_meet_custom_lang.keys() | list }}"
tags: jitsi
- name: Install dehydrated hook
template: src=dehydrated_hook.sh.j2 dest=/etc/dehydrated/hooks_deploy_cert.d/jitsi.sh mode=755
tags: jitsi
- name: Install the conference mapping daemon
get_url:
url: https://raw.githubusercontent.com/gronke/jitsi-conferencemapper-api/master/daemon.py
dest: "{{ jitsi_root_dir }}/confmapper/daemon.py"
mode: 0755
notify: restart jitsi-confmapper
tags: jitsi
- name: Ensure prosody module dir exists
file: path=/opt/prosody/modules/ state=directory
tags: jitsi
- name: Install bypass_pwd module for prosody
template: src=mod_jibri_bypass_pwd.lua.j2 dest=/opt/prosody/modules/mod_jibri_bypass_pwd.lua
notify: reload prosody
tags: jitsi