summaryrefslogtreecommitdiffstats
path: root/pad
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-10-11 20:40:32 -0400
committerSacha Chua <sacha@sachachua.com>2022-10-11 20:41:07 -0400
commit8e290130b47b7f3b9d442c8d6531218eb2f09867 (patch)
treec8fab9bc27ab3f447524939ea8b2940b6080fba1 /pad
parent6d1743c83e239806b1b6fb635e184a59a5f28f5a (diff)
downloademacsconf-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 '')
-rw-r--r--pad/defaults/main.yml3
-rw-r--r--pad/tasks/main.yml56
-rwxr-xr-xpad/templates/etherpad.init.d79
-rw-r--r--pad/templates/settings.json2
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.