going on with etherpad role, using postgresql, nodejs and caddy as deps
This commit is contained in:
parent
d0be376e00
commit
1f07accf2f
13 changed files with 164 additions and 276 deletions
12
README.md
12
README.md
|
@ -1,3 +1,13 @@
|
|||
# infra
|
||||
tentativo di mantenere le cose ordinate, ansible Vagrant e altri amenuncoli
|
||||
|
||||
## Roles:
|
||||
|
||||
### Common
|
||||
|
||||
### nodejs
|
||||
|
||||
### etherpad
|
||||
|
||||
### caddy
|
||||
|
||||
tentativo di mantenere le cose ordinate :D ansible Vagrant e altri amenuncoli
|
|
@ -1,99 +1,14 @@
|
|||
---
|
||||
etherpad:
|
||||
title: "Etherpad"
|
||||
favicon: "favicon.ico"
|
||||
ip: 0.0.0.0
|
||||
port: 9001
|
||||
users: []
|
||||
# -
|
||||
# name: admin
|
||||
# password: ""
|
||||
# is_admin: "true"
|
||||
default_text: '"Welcome to Etherpad!\\n\\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\\n\\nGet involved with Etherpad at http:\\/\\/etherpad.org\\n"'
|
||||
pad_options_no_colors: "false"
|
||||
pad_options_show_controls: "true"
|
||||
pad_options_show_chat: "true"
|
||||
pad_options_show_line_numbers: "true"
|
||||
pad_options_use_monospace_font: "false"
|
||||
pad_options_user_name: "false"
|
||||
pad_options_user_color: "false"
|
||||
pad_options_rtl: "false"
|
||||
pad_options_always_show_chat: "false"
|
||||
pad_options_chat_and_users: "false"
|
||||
pad_options_lang: "en-gb"
|
||||
pad_shortcut_alt_f9: "true"
|
||||
pad_shortcut_alt_c: "true"
|
||||
pad_shortcut_cmd_shft_2: "true"
|
||||
pad_shortcut_delete: "true"
|
||||
pad_shortcut_return: "true"
|
||||
pad_shortcut_esc: "true"
|
||||
pad_shortcut_cmd_s: "true"
|
||||
pad_shortcut_tab: "true"
|
||||
pad_shortcut_cmd_z: "true"
|
||||
pad_shortcut_cmd_y: "true"
|
||||
pad_shortcut_cmd_i: "true"
|
||||
pad_shortcut_cmd_b: "true"
|
||||
pad_shortcut_cmd_u: "true"
|
||||
pad_shortcut_cmd_5: "true"
|
||||
pad_shortcut_cmd_shift_l: "true"
|
||||
pad_shortcut_cmd_shift_n: "true"
|
||||
pad_shortcut_cmd_shift_1: "true"
|
||||
pad_shortcut_cmd_shift_c: "true"
|
||||
pad_shortcut_cmd_h: "true"
|
||||
pad_shortcut_ctrl_home: "true"
|
||||
pad_shortcut_page_up: "true"
|
||||
pad_shortcut_page_down: "true"
|
||||
suppress_errors_in_pad_text: "false"
|
||||
require_session: "false"
|
||||
edit_only: "false"
|
||||
session_no_password: "false"
|
||||
minify: "true"
|
||||
max_age: 21600
|
||||
abiword: "null"
|
||||
soffice: "null"
|
||||
tidyhtml: "null"
|
||||
allow_unknown_file_ends: "true"
|
||||
require_authentication: "false"
|
||||
require_authorization: "false"
|
||||
trust_proxy: "false"
|
||||
socket_transport_protocols: ["xhr-polling", "jsonp-polling", "htmlfile"]
|
||||
load_test: "false"
|
||||
indentation_on_new_line: "false"
|
||||
automatic_reconnection_timeout: 0
|
||||
expose_version: "false"
|
||||
toolbar:
|
||||
left:
|
||||
- ["bold", "italic", "underline", "strikethrough"]
|
||||
- ["orderedlist", "unorderedlist", "indent", "outdent"]
|
||||
- ["undo", "redo"]
|
||||
- ["clearauthorship"]
|
||||
right:
|
||||
- ["importexport", "timeslider", "savedrevision"]
|
||||
- ["settings", "embed"]
|
||||
- ["showusers"]
|
||||
timeslider:
|
||||
- ["timeslider_export", "timeslider_returnToPad"]
|
||||
log_level: "INFO"
|
||||
abiword_enabled: False
|
||||
console_enabled: False
|
||||
monit_enabled: False
|
||||
# list of etherpad plugins to be installed
|
||||
plugins: []
|
||||
plugins_state: present
|
||||
title: "Etherpad"
|
||||
favicon: "favicon.ico"
|
||||
hostname: "0.0.0.0"
|
||||
database_password: "{{lookup('password', './database_password')}}"
|
||||
pad_options_lang: 'it-it'
|
||||
|
||||
mysql_database_host: /var/run/postgresql
|
||||
mysql_database_name: etherpad
|
||||
mysql_database_user: etherpad
|
||||
mysql_database_password: etherpad
|
||||
mysql_database_port: 3306
|
||||
plugins: ['ep_comments_page', 'ep_headings2', 'ep_markdown', 'ep_align', 'ep_page_view']
|
||||
|
||||
# Recommendation for large setups is MyISAM
|
||||
mysql_database_engine: InnoDB
|
||||
mysql_database_collation: utf8mb4_bin
|
||||
mysql_database_charset: utf8mb4
|
||||
|
||||
# Settings for plugin 'ep_table_of_contents'
|
||||
toc_disable: "true"
|
||||
|
||||
# Settings for plugin 'ep_auth_author'
|
||||
# auth_author_prefix:
|
||||
pad_default_text: |
|
||||
Welcome to Etherpad!
|
||||
This pad text is synchronized as you type, so that everyone viewing this page sees the same text.
|
||||
This allows you to collaborate seamlessly on documents!
|
||||
Get involved with Etherpad at"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
- name: restart etherpad-lite
|
||||
- name: restart etherpad
|
||||
service:
|
||||
name: etherpad-lite
|
||||
name: etherpad
|
||||
state: restarted
|
||||
|
|
13
roles/etherpad/meta/main.yml
Normal file
13
roles/etherpad/meta/main.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: nodejs
|
||||
- role: postgresql
|
||||
vars:
|
||||
username: etherpad
|
||||
password: "{{ database_password }}"
|
||||
database: etherpad
|
||||
- role: caddy
|
||||
vars:
|
||||
caddyfile: |
|
||||
http://{{hostname}}:80
|
||||
reverse_proxy / /tmp/etherpad.socket"
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
|
||||
- name: Ensure abiword package is installed
|
||||
- name: Ensure abiword, soffice, tidy packages are installed
|
||||
apt:
|
||||
pkg: abiword
|
||||
state: present
|
||||
pkg:
|
||||
- abiword
|
||||
- tidy
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
---
|
||||
- include: postgresql.yml
|
||||
|
||||
- name: ensure etherpad user is present
|
||||
user:
|
||||
name: "etherpad"
|
||||
|
@ -19,25 +17,29 @@
|
|||
|
||||
- name: ensure etherpad systemd unit is latest
|
||||
template:
|
||||
src: etherpad-lite.service.j2
|
||||
dest: /etc/systemd/system/etherpad-lite.service
|
||||
src: etherpad.service.j2
|
||||
dest: /etc/systemd/system/etherpad.service
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
|
||||
- name: ensure etherpad will start after system is booted
|
||||
service:
|
||||
name: etherpad-lite
|
||||
name: etherpad
|
||||
enabled: yes
|
||||
|
||||
- name: install etherpad deps
|
||||
shell: installDeps.sh
|
||||
args:
|
||||
chdir: /srv/etherpad/etherpad/bin
|
||||
|
||||
- name: install etherpad plugins
|
||||
npm:
|
||||
name: "{{ item }}"
|
||||
path: "{{ etherpad.path }}"
|
||||
state: "{{ etherpad.plugins_state }}"
|
||||
path: "/srv/etherpad/etherpad"
|
||||
become: true
|
||||
become_user: etherpad
|
||||
with_items: "{{ etherpad.plugins|d() }}"
|
||||
notify: restart etherpad-lite
|
||||
with_items: "{{ plugins|d() }}"
|
||||
notify: restart etherpad
|
||||
|
||||
- include: abiword.yml
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
pkg:
|
||||
- postgresql
|
||||
- python3-psycopg2
|
||||
|
||||
- name: Create etherpad postgresql db
|
||||
become: yes
|
||||
become_user: postgres
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
#!/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:/opt/node/bin"
|
||||
LOGFILE="/var/log/etherpad-lite/etherpad-lite.log"
|
||||
EPLITE_DIR="{{ etherpad_path }}"
|
||||
EPLITE_BIN="bin/safeRun.sh"
|
||||
USER="{{ etherpad_user }}"
|
||||
GROUP="{{ etherpad_group }}"
|
||||
DESC="Etherpad Lite"
|
||||
NAME="etherpad-lite"
|
||||
|
||||
set -e
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
start() {
|
||||
echo "Starting $DESC... "
|
||||
|
||||
start-stop-daemon --start --chuid "$USER:$GROUP" --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
|
|
@ -1,74 +1,73 @@
|
|||
#jinja2: lstrip_blocks: True
|
||||
{
|
||||
"title": "{{ etherpad.title }}",
|
||||
"favicon": "{{ etherpad.favicon }}",
|
||||
"ip": "{{ etherpad.ip }}",
|
||||
"port" : {{ etherpad.port }},
|
||||
"title": "{{ title }}",
|
||||
"favicon": "{{ favicon }}",
|
||||
"ip": "",
|
||||
"port" : "/tmp/etherpad.socket",
|
||||
"showSettingsInAdminPage": false,
|
||||
"sessionKey": "{{ etherpad.session_key }}",
|
||||
"skinName": "colibris",
|
||||
"dbType": "mysql",
|
||||
"dbType": "postgresql",
|
||||
"dbSettings" : {
|
||||
"user" : "{{ etherpad.mysql_database_user }}",
|
||||
"host" : "{{ etherpad.mysql_database_host }}",
|
||||
"port" : {{ etherpad.mysql_database_port }},
|
||||
"password": "{{ etherpad.mysql_database_password }}",
|
||||
"database": "{{ etherpad.mysql_database_name }}",
|
||||
"charset" : "{{ etherpad.mysql_database_charset }}"
|
||||
"user" : "etherpad",
|
||||
"host" : "/var/run/postgresql",
|
||||
"password": "{{ database_password }}",
|
||||
"database": "etherpad",
|
||||
"charset" : "utf8mb4"
|
||||
},
|
||||
"defaultPadText": {{ etherpad.default_text }},
|
||||
"defaultPadText": "{{ pad_default_text }}",
|
||||
"padOptions": {
|
||||
"noColors": {{ etherpad.pad_options_no_colors }},
|
||||
"showControls": {{ etherpad.pad_options_show_controls }},
|
||||
"showChat": {{ etherpad.pad_options_show_chat }},
|
||||
"showLineNumbers": {{ etherpad.pad_options_show_line_numbers }},
|
||||
"useMonospaceFont": {{ etherpad.pad_options_use_monospace_font }},
|
||||
"userName": {{ etherpad.pad_options_user_name }},
|
||||
"userColor": {{ etherpad.pad_options_user_color }},
|
||||
"rtl": {{ etherpad.pad_options_rtl }},
|
||||
"alwaysShowChat": {{ etherpad.pad_options_always_show_chat }},
|
||||
"chatAndUsers": {{ etherpad.pad_options_chat_and_users }},
|
||||
"lang": "{{ etherpad.pad_options_lang }}"
|
||||
"noColors": false,
|
||||
"showControls": true,
|
||||
"showChat": true,
|
||||
"showLineNumbers": true,
|
||||
"useMonospaceFont": true,
|
||||
"userName": true,
|
||||
"userColor": false,
|
||||
"rtl": false,
|
||||
"alwaysShowChat": false,
|
||||
"chatAndUsers": false,
|
||||
"lang": "{{ pad_options_lang }}"
|
||||
},
|
||||
"padShortcutEnabled" : {
|
||||
"altF9": {{ etherpad.pad_shortcut_alt_f9 }},
|
||||
"altC": {{ etherpad.pad_shortcut_alt_c }},
|
||||
"cmdShift2": {{ etherpad.pad_shortcut_cmd_shft_2 }},
|
||||
"delete": {{ etherpad.pad_shortcut_delete }},
|
||||
"return": {{ etherpad.pad_shortcut_return }},
|
||||
"esc": {{ etherpad.pad_shortcut_esc }},
|
||||
"cmdS": {{ etherpad.pad_shortcut_cmd_s }},
|
||||
"tab": {{ etherpad.pad_shortcut_tab }},
|
||||
"cmdZ": {{ etherpad.pad_shortcut_cmd_z }},
|
||||
"cmdY": {{ etherpad.pad_shortcut_cmd_y }},
|
||||
"cmdI": {{ etherpad.pad_shortcut_cmd_i }},
|
||||
"cmdB": {{ etherpad.pad_shortcut_cmd_b }},
|
||||
"cmdU": {{ etherpad.pad_shortcut_cmd_u }},
|
||||
"cmd5": {{ etherpad.pad_shortcut_cmd_5 }},
|
||||
"cmdShiftL": {{ etherpad.pad_shortcut_cmd_shift_l }},
|
||||
"cmdShiftN": {{ etherpad.pad_shortcut_cmd_shift_n }},
|
||||
"cmdShift1": {{ etherpad.pad_shortcut_cmd_shift_1 }},
|
||||
"cmdShiftC": {{ etherpad.pad_shortcut_cmd_shift_c }},
|
||||
"cmdH": {{ etherpad.pad_shortcut_cmd_h }},
|
||||
"ctrlHome": {{ etherpad.pad_shortcut_ctrl_home }},
|
||||
"pageUp": {{ etherpad.pad_shortcut_page_up }},
|
||||
"pageDown": {{ etherpad.pad_shortcut_page_down }}
|
||||
"altF9": true,
|
||||
"altC": true,
|
||||
"cmdShift2": true,
|
||||
"delete": true,
|
||||
"return": true,
|
||||
"esc": true,
|
||||
"cmdS": true,
|
||||
"tab": true,
|
||||
"cmdZ": true,
|
||||
"cmdY": true,
|
||||
"cmdI": true,
|
||||
"cmdB": true,
|
||||
"cmdU": true,
|
||||
"cmd5": true,
|
||||
"cmdShiftL": true,
|
||||
"cmdShiftN": true,
|
||||
"cmdShift1": true,
|
||||
"cmdShiftC": true,
|
||||
"cmdH": true,
|
||||
"ctrlHome": true,
|
||||
"pageUp": true,
|
||||
"pageDown": true}
|
||||
},
|
||||
"suppressErrorsInPadText": {{ etherpad.suppress_errors_in_pad_text }},
|
||||
"requireSession": {{ etherpad.require_session }},
|
||||
"editOnly": {{ etherpad.edit_only }},
|
||||
"sessionNoPassword": {{ etherpad.session_no_password }},
|
||||
"minify": {{ etherpad.minify }},
|
||||
"maxAge": {{ etherpad.max_age }},
|
||||
"abiword": {{ etherpad.abiword }},
|
||||
"soffice": {{ etherpad.soffice }},
|
||||
"tidyHtml": {{ etherpad.tidyhtml }},
|
||||
"allowUnknownFileEnds": {{ etherpad.allow_unknown_file_ends }},
|
||||
"requireAuthentication": {{ etherpad.require_authentication }},
|
||||
"requireAuthorization": {{ etherpad.require_authorization }},
|
||||
"trustProxy": {{ etherpad.trust_proxy }},
|
||||
"disableIPlogging": {{ etherpad.disable_ip_logging }},
|
||||
"automaticReconnectionTimeout": {{ etherpad.automatic_reconnection_timeout }},
|
||||
"suppressErrorsInPadText": false,
|
||||
"requireSession": false,
|
||||
"editOnly": false,
|
||||
"sessionNoPassword": false,
|
||||
"minify": true,
|
||||
"maxAge": 21600,
|
||||
"abiword": "/usr/bin/abiword",
|
||||
"soffice": "/usr/bin/soffice",
|
||||
"tidyHtml": "/usr/bin/tidy",
|
||||
"allowUnknownFileEnds": true,
|
||||
"requireAuthentication": false,
|
||||
"requireAuthorization": false,
|
||||
"trustProxy": false,
|
||||
"disableIPlogging": true,
|
||||
"automaticReconnectionTimeout": 5,
|
||||
"scrollWhenFocusLineIsOutOfViewport": {
|
||||
"percentage": {
|
||||
"editionAboveViewport": 0,
|
||||
|
@ -78,32 +77,25 @@
|
|||
"scrollWhenCaretIsInTheLastLineOfViewport": false,
|
||||
"percentageToScrollWhenUserPressesArrowUp": 0
|
||||
},
|
||||
{% if 'ep_table_of_contents' in etherpad.plugins %}
|
||||
"ep_toc": {
|
||||
"disable_by_default": {{ etherpad.toc_disable }}
|
||||
},
|
||||
{% endif %}
|
||||
{% if 'ep_auth_author' in etherpad.plugins and etherpad.auth_author_prefix is defined %}
|
||||
"ep_auth_author": {
|
||||
"prefix": "{{ etherpad.auth_author_prefix }}"
|
||||
},
|
||||
{% endif %}
|
||||
"users": {
|
||||
{% for user in etherpad.users %}
|
||||
"{% if user.auth_author is defined and user.auth_author %}{{ etherpad.auth_author_prefix }}{% endif %}{{ user.name }}": {
|
||||
"password": "{{ user.password }}",
|
||||
{% if user.auth_author is defined and user.auth_author %}
|
||||
"author_name": "{{ user.name }}",
|
||||
{% endif %}
|
||||
"is_admin": {{ user.is_admin }}
|
||||
}{% if not loop.last %},{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
},
|
||||
"socketTransportProtocols": {{ etherpad.socket_transport_protocols|to_json }},
|
||||
"socketTransportProtocols": : ["xhr-polling", "jsonp-polling", "htmlfile"],
|
||||
"loadTest": false,
|
||||
"indentationOnNewLine": {{ etherpad.indentation_on_new_line }},
|
||||
"toolbar": {{ etherpad.toolbar|to_json }},
|
||||
"indentationOnNewLine": false,
|
||||
"toolbar": {
|
||||
"left": [
|
||||
["bold", "italic", "underline", "strikethrough"],
|
||||
["orderedlist", "unorderedlist", "indent", "outdent"],
|
||||
["undo", "redo"],
|
||||
["clearauthorship"]
|
||||
],
|
||||
"right": [
|
||||
["importexport", "timeslider", "savedrevision"],
|
||||
["settings", "embed"],
|
||||
["showusers"]
|
||||
],
|
||||
"timeslider": [
|
||||
["timeslider_export", "timeslider_returnToPad"]
|
||||
]
|
||||
}
|
||||
"exposeVersion": false,
|
||||
"loglevel": "{{ etherpad.log_level }}",
|
||||
"loglevel": "WARN",
|
||||
}
|
||||
|
|
4
roles/postgresql/README.md
Normal file
4
roles/postgresql/README.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
# cisti.org postgresql
|
||||
|
||||
- installa postgresql
|
||||
- se specificato crea un db e un utente con tutti i permessi su quel db
|
4
roles/postgresql/defaults/main.yml
Normal file
4
roles/postgresql/defaults/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
username: false
|
||||
password: false
|
||||
database: false
|
25
roles/postgresql/tasks/main.yml
Normal file
25
roles/postgresql/tasks/main.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
- name: Install postgresql
|
||||
apt:
|
||||
pkg:
|
||||
- acl
|
||||
- postgresql
|
||||
- python3-psycopg2
|
||||
|
||||
- name: Create postgresql db
|
||||
become: true
|
||||
become_user: postgres
|
||||
postgresql_db:
|
||||
name: "{{database}}"
|
||||
when: database != false
|
||||
|
||||
- name: Create postgresql user
|
||||
when: username != false
|
||||
become: true
|
||||
become_user: postgres
|
||||
postgresql_user:
|
||||
db: "{{database}}"
|
||||
name: "{{username}}"
|
||||
password: "{{password}}"
|
||||
|
||||
|
Loading…
Reference in a new issue