diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-10-11 20:40:32 -0400 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-10-11 20:41:07 -0400 |
commit | 8e290130b47b7f3b9d442c8d6531218eb2f09867 (patch) | |
tree | c8fab9bc27ab3f447524939ea8b2940b6080fba1 /pad | |
parent | 6d1743c83e239806b1b6fb635e184a59a5f28f5a (diff) | |
download | emacsconf-ansible-8e290130b47b7f3b9d442c8d6531218eb2f09867.tar.xz emacsconf-ansible-8e290130b47b7f3b9d442c8d6531218eb2f09867.zip |
Yay, pads are created based on the talks.json file
Also, the playbook waits until the pad is up
Diffstat (limited to 'pad')
-rw-r--r-- | pad/defaults/main.yml | 3 | ||||
-rw-r--r-- | pad/tasks/main.yml | 56 | ||||
-rwxr-xr-x | pad/templates/etherpad.init.d | 79 | ||||
-rw-r--r-- | pad/templates/settings.json | 2 |
4 files changed, 133 insertions, 7 deletions
diff --git a/pad/defaults/main.yml b/pad/defaults/main.yml index 398c9a2..386abf7 100644 --- a/pad/defaults/main.yml +++ b/pad/defaults/main.yml @@ -6,3 +6,6 @@ etherpad_database_name: emacsconf_pad etherpad_database_user: etherpad etherpad_user: etherpad etherpad_group: etherpad +etherpad_api_key: b7a15dc34cc7f6917cca6cd9a2b4b92145af7c7cd9b341af34869ab8cd3568be +etherpad_base: emacsconf +etherpad_year: 2022 diff --git a/pad/tasks/main.yml b/pad/tasks/main.yml index ab15984..8637406 100644 --- a/pad/tasks/main.yml +++ b/pad/tasks/main.yml @@ -12,6 +12,7 @@ apt: update_cache: yes name: + - systemd - sudo - nodejs - mariadb-server @@ -34,14 +35,57 @@ template: src: templates/settings.json dest: "{{ etherpad_path }}/settings.json" -# - name: Install etherpad plugins -# npm: -# name: ep_stats -# path: "{{ etherpad_path }}" -# become: true -# become_user: etherpad +- name: Set etherpad API key + copy: + content: "{{ etherpad_api_key }}" + dest: "{{ etherpad_path }}/APIKEY.txt" + owner: "{{ etherpad_user }}" + mode: "0600" - name: Install dependencies shell: cd {{ etherpad_path }}; . src/bin/functions.sh; src/bin/installDeps.sh become: true become_user: etherpad +- name: Install etherpad plugins + npm: + name: ep_pad-lister + path: "{{ etherpad_path }}" + become: true + become_user: etherpad - include: mariadb.yml +- name: Install init.d configuration + tags: system + template: + src: etherpad.init.d + dest: /etc/init.d/etherpad + owner: root + group: root + mode: 0755 +- name: Start Etherpad + tags: system + service: + name: etherpad + state: started +- tags: create-pads + include_vars: + file: talks.json + name: talks +- name: Set slugs + tags: create-pads + set_fact: + slugs: +- name: Wait for OK + tags: create-pads + uri: + url: "http://localhost:9001/api/1/createPad?apikey={{ etherpad_api_key }}&padID={{etherpad_base}}-{{etherpad_year}}" + register: _result + until: _result.status == 200 + retries: 720 + delay: 5 +- debug: + var: _result + tags: create-pads +- name: Create pads + tags: create-pads + uri: + url: "http://localhost:9001/api/1/createPad?apikey={{ etherpad_api_key }}&padID={{etherpad_base}}-{{etherpad_year}}-{{ item.slug }}" + loop: "{{ talks | json_query('talks[*]') }}" diff --git a/pad/templates/etherpad.init.d b/pad/templates/etherpad.init.d new file mode 100755 index 0000000..420ae27 --- /dev/null +++ b/pad/templates/etherpad.init.d @@ -0,0 +1,79 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: etherpad-lite +# Required-Start: $local_fs $remote_fs $network $syslog +# Required-Stop: $local_fs $remote_fs $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts etherpad lite +# Description: starts etherpad lite using start-stop-daemon +### END INIT INFO + +PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" +LOGFILE="{{ etherpad_path }}/etherpad-lite.log" +EPLITE_DIR="{{ etherpad_path }}" +EPLITE_BIN="src/bin/safeRun.sh" +USER="{{ etherpad_user }}" +GROUP="{{ etherpad_group }}" +DESC="Etherpad Lite" +NAME="etherpad" + +set -e + +. /lib/lsb/init-functions + +start() { + echo "Starting $DESC... " + + start-stop-daemon --start --chuid "$USER:$GROUP" -d $EPLITE_DIR --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true + echo "done" +} + +#We need this function to ensure the whole process tree will be killed +killtree() { + local _pid=$1 + local _sig=${2-TERM} + for _child in $(ps -o pid --no-headers --ppid ${_pid}); do + killtree ${_child} ${_sig} + done + kill -${_sig} ${_pid} +} + +stop() { + echo "Stopping $DESC... " + if test -f /var/run/$NAME.pid; then + while test -d /proc/$(cat /var/run/$NAME.pid); do + killtree $(cat /var/run/$NAME.pid) 15 + sleep 0.5 + done + rm /var/run/$NAME.pid + fi + echo "done" +} + +status() { + status_of_proc -p /var/run/$NAME.pid "" "etherpad-lite" && exit 0 || exit $? +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status + ;; + *) + echo "Usage: $NAME {start|stop|restart|status}" >&2 + exit 1 + ;; +esac + +exit 0
\ No newline at end of file diff --git a/pad/templates/settings.json b/pad/templates/settings.json index 137ce03..1832ef3 100644 --- a/pad/templates/settings.json +++ b/pad/templates/settings.json @@ -215,7 +215,7 @@ /* * The default text of a pad */ - "defaultPadText" : "Conference info, how to watch/participate: https://emacsconf.org/2022/\nGuidelines for conduct: https://emacsconf.org/conduct/\nIRC: channel #emacsconf via https://chat.emacsconf.org or libera.chat network\n\nExcept where otherwise noted, the material on the EmacsConf pad are dual-licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International Public License; and the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) an later version. Copies of these two licenses are included in the EmacsConf wiki repository, in the COPYING.GPL and COPYING.CC-BY-SA files (https://emacsconf.org/COPYING/)\n\nBy contributing to this pad, you agree to make your contributions available under the above licenses. You are also promising that you are the author of your changes, or that you copied them from a work in the public domain or a work released under a free license that is compatible with the above two licenses. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION.", + "defaultPadText" : "Conference info, how to watch/participate: https://emacsconf.org/2022/\nGuidelines for conduct: https://emacsconf.org/conduct/\nIRC: channel #emacsconf via https://chat.emacsconf.org or libera.chat network\nSee end of file for license (CC Attribution-ShareAlike 4.0 + GPLv3 or later)\n----------------------------------------------------------------\nQuestions and discussion go here:\n<ul><li></li><li></li><li></li></ul>\n----------------------------------------------------------------\nExcept where otherwise noted, the material on the EmacsConf pad are dual-licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International Public License; and the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) an later version. Copies of these two licenses are included in the EmacsConf wiki repository, in the COPYING.GPL and COPYING.CC-BY-SA files (https://emacsconf.org/COPYING/)\n\nBy contributing to this pad, you agree to make your contributions available under the above licenses. You are also promising that you are the author of your changes, or that you copied them from a work in the public domain or a work released under a free license that is compatible with the above two licenses. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION.", /* * Default Pad behavior. |