diff --git a/group_vars/jitsi.yml b/group_vars/jitsi.yml new file mode 100644 index 0000000000000000000000000000000000000000..a9d1b0fcc16ea33a9ddb55a42ff0a30787da69c0 --- /dev/null +++ b/group_vars/jitsi.yml @@ -0,0 +1,11 @@ +--- +# We use embedded Jitsi configuration +loc_nginx: + servers: [] + +glob_jitsi: + ip: "{{ query('ldap', 'ip', ansible_hostname, 'srv') }}" + hostname: "{{ ansible_hostname }}.crans.org" + configuration: + - "liveStreamingEnabled" + - "prejoinPageEnabled" diff --git a/hosts b/hosts index 546127cf420c039554175eccaa14f93a1deff996..c95de5ce4ff4c2afb8af48cb59cfe5361793c94c 100644 --- a/hosts +++ b/hosts @@ -26,6 +26,7 @@ sputnik.adm.crans.org [certbot:children] dovecot gitlab +jitsi mailman radius # We use certbot to manage LE certificates reverseproxy @@ -69,6 +70,9 @@ horde.adm.crans.org [irc] irc.adm.crans.org +[jitsi] +jitsi.adm.crans.org + [keepalived:children] routeurs_vm @@ -93,6 +97,7 @@ charybde.adm.crans.org [nginx:children] django_cas +jitsi mailman reverseproxy roundcube diff --git a/plays/jitsi.yml b/plays/jitsi.yml new file mode 100755 index 0000000000000000000000000000000000000000..77395233a36410ddd0eb26c3435a56b6d417125f --- /dev/null +++ b/plays/jitsi.yml @@ -0,0 +1,11 @@ +#!/usr/bin/env ansible-playbook +--- +- hosts: jitsi + vars: + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' + nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}' + jitsi: '{{ glob_jitsi | default({}) | combine(loc_jitsi | default({})) }}' + roles: + - certbot + - nginx + - jitsi diff --git a/roles/jitsi/tasks/main.yml b/roles/jitsi/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..b2500196c11896082e9e8f02e8574da73e79d634 --- /dev/null +++ b/roles/jitsi/tasks/main.yml @@ -0,0 +1,77 @@ +--- +- name: Install GPG dependencies + apt: + update_cache: true + install_recommends: false + name: + - apt-transport-https + - gnupg2 + register: apt_result + retries: 3 + until: apt_result is succeeded + +- name: Define host + lineinfile: + path: /etc/hosts + regexp: "^{{ item }}" + line: '{{ item }} {{ jitsi.hostname }}' + loop: "{{ jitsi.ip }}" + +- name: Import public key of Jitsi repository + apt_key: + url: https://download.jitsi.org/jitsi-key.gpg.key + +- name: Configure Jitsi repository + template: + src: apt/sources.list.d/jitsi.list.j2 + dest: /etc/apt/sources.list.d/jitsi.list + mode: 0644 + owner: root + group: root + +- name: Configure debian questions + debconf: + name: "{{ item.name }}" + question: "{{ item.question }}" + value: "{{ item.value }}" + vtype: "{{ item.vtype }}" + loop: + - name: jitsi-meet-prosody + question: jitsi-videobridge/jvb-hostname + value: "{{ jitsi.hostname }}" + vtype: "string" + - name: jitsi-meet-web-config + question: jitsi-meet/cert-choice + value: "I want to use my own certificate" + vtype: "select" + - name: jitsi-meet-web-config + question: jitsi-meet/cert-path-crt + value: "/etc/letsencrypt/live/{{ certbot[0].certname }}/fullchain.pem" + vtype: "string" + - name: jitsi-meet-web-config + question: jitsi-meet/cert-path-key + value: "/etc/letsencrypt/live/{{ certbot[0].certname }}/privkey.pem" + vtype: "string" + +- name: Install Jitsi-meet + apt: + update_cache: true + install_recommends: false + name: + - jitsi-meet + register: apt_result + retries: 3 + until: apt_result is succeeded + +- name: Apply Jitsi configuration + lineinfile: + path: "/etc/jitsi/meet/{{ jitsi.hostname }}-config.js" + regexp: "{{ item }}" + line: " {{ item }}: true," + loop: "{{ jitsi.configuration }}" + +- name: Indicate role in motd + template: + src: update-motd.d/05-service.j2 + dest: /etc/update-motd.d/05-jitsi + mode: 0755 diff --git a/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2 b/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2 new file mode 100644 index 0000000000000000000000000000000000000000..4d0cc941d4dc48731b57700aa5695d32fe8d4f6e --- /dev/null +++ b/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2 @@ -0,0 +1,3 @@ +{{ ansible_header | comment }} + +deb https://download.jitsi.org stable/ diff --git a/roles/jitsi/templates/update-motd.d/05-service.j2 b/roles/jitsi/templates/update-motd.d/05-service.j2 new file mode 100755 index 0000000000000000000000000000000000000000..d1f742950e2f2507b421cd5e7f7ee4669ec0aefc --- /dev/null +++ b/roles/jitsi/templates/update-motd.d/05-service.j2 @@ -0,0 +1,3 @@ +#!/usr/bin/tail +14 +{{ ansible_header | comment }} +[0m> [38;5;82mJitsi[0m a été déployé sur cette machine. Voir [38;5;6m/etc/jitsi/[0m.