add etherpad role
authorRalf Jung <post@ralfj.de>
Sun, 20 May 2018 08:43:50 +0000 (10:43 +0200)
committerRalf Jung <post@ralfj.de>
Sun, 20 May 2018 08:43:50 +0000 (10:43 +0200)
roles/etherpad/tasks/main.yml [new file with mode: 0644]
roles/etherpad/templates/etherpad-lite.service [new file with mode: 0644]
roles/etherpad/templates/settings.json [new file with mode: 0644]
site.yml

diff --git a/roles/etherpad/tasks/main.yml b/roles/etherpad/tasks/main.yml
new file mode 100644 (file)
index 0000000..82c9e1f
--- /dev/null
@@ -0,0 +1,33 @@
+- name: create nodejs user
+  user:
+    name: nodejs
+    system: yes
+    group: nogroup
+    home: /var/lib/nodejs
+    shell: /bin/false
+- name: create etherpad dir
+  file: path=/srv/{{etherpad.domain}} state=directory owner=nodejs group=www-data
+- name: check out etherpad sources
+  become_user: nodejs
+  register: etherpad_src
+  git:
+    dest: /srv/{{etherpad.domain}}/etherpad-lite
+    repo: 'https://github.com/ether/etherpad-lite.git'
+    version: '1.6.6'
+    force: yes
+- name: create etherpad service file
+  register: etherpad_service
+  template:
+    dest: /etc/systemd/system/etherpad-lite.service
+    src: templates/etherpad-lite.service
+- name: configure etherpad
+  register: etherpad_settings
+  template:
+    dest: /srv/{{etherpad.domain}}/etherpad-lite/settings.json
+    src: templates/settings.json
+    mode: u=rw,g=,o=
+    owner: nodejs
+    group: nogroup
+- name: (re)start and enable etherpad service
+  when: etherpad_src.changed or etherpad_service.changed or etherpad_settings.changed
+  systemd: name=etherpad-lite state=restarted daemon_reload=yes enabled=yes
diff --git a/roles/etherpad/templates/etherpad-lite.service b/roles/etherpad/templates/etherpad-lite.service
new file mode 100644 (file)
index 0000000..3673f30
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=etherpad-lite (real-time collaborative document editing)
+After=syslog.target network.target
+
+[Service]
+Type=simple
+User=nodejs
+Group=nogroup
+Environment=NODE_ENV=production
+ExecStart=/srv/{{etherpad.domain}}/etherpad-lite/bin/run.sh
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/etherpad/templates/settings.json b/roles/etherpad/templates/settings.json
new file mode 100644 (file)
index 0000000..74bb3c6
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+  This file must be valid JSON. But comments are allowed
+
+  Please edit settings.json, not settings.json.template
+*/
+{
+  //IP and port which etherpad should bind at
+  "ip": "127.0.0.1",
+  "port" : 9001,
+
+  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
+  //You shouldn't use "dirty" for for anything else than testing or development
+   "dbType" : "mysql",
+   "dbSettings" : {
+                    "user"    : "etherpad",
+                    "host"    : "localhost",
+                    "password": "{{etherpad.mysql_password}}",
+                    "database": "etherpad"
+                  },
+
+  //the default text of a pad
+  "defaultPadText" : "{{etherpad.default_text}}",
+
+  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
+  "requireSession" : false,
+
+  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
+  "editOnly" : false,
+
+  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
+     but makes it impossible to debug the javascript/css */
+  "minify" : true,
+
+  /* How long may clients use served javascript code (in seconds)? Without versioning this
+     may cause problems during deployment. Set to 0 to disable caching */
+  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours
+
+  /* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
+     Abiword is needed to advanced import/export features of pads*/
+  "abiword" : null,
+
+  /* This setting is used if you require authentication of all users.
+     Note: /admin always requires authentication. */
+  "requireAuthentication" : false,
+
+  /* Require authorization by a module, or a user with is_admin set, see below. */
+  "requireAuthorization" : false,
+
+  /* Users for basic authentication. is_admin = true gives access to /admin.
+     If you do not uncomment this, /admin will not be available! */
+
+  "users": {
+    "admin": {
+      "password": "{{etherpad.admin_password}}",
+      "is_admin": true
+    }
+  },
+
+  // restrict socket.io transport methods
+  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
+
+  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
+  "loglevel": "WARN"
+}
index 0d82190..3c5fe4e 100644 (file)
--- a/site.yml
+++ b/site.yml
   - bind
   tags: bind
 
+- hosts: etherpad
+  gather_facts: no
+  roles:
+  - etherpad
+  tags: etherpad
+
 - hosts: prosody
   gather_facts: no
   roles: