class role::etherpad (
) {
$password_seed = lookup("base_installation::puppet_pass_seed")
include "base_installation"
include "profile::tools"
include "profile::postgresql"
include "profile::apache"
ensure_packages(["npm"])
ensure_packages(["abiword"])
ensure_packages(["libreoffice-fresh", "libreoffice-fresh-fr", "java-runtime-common", "jre8-openjdk"])
ensure_packages(["tidy"])
aur::package { "etherpad-lite": }
$modules = [
"ep_aa_file_menu_toolbar",
"ep_adminpads",
"ep_align",
"ep_bookmark",
"ep_clear_formatting",
"ep_colors",
"ep_copy_paste_select_all",
"ep_cursortrace",
"ep_embedmedia",
"ep_font_family",
"ep_font_size",
"ep_headings2",
"ep_ldapauth",
"ep_line_height",
"ep_markdown",
"ep_previewimages",
"ep_ruler",
"ep_scrollto",
"ep_set_title_on_pad",
"ep_subscript_and_superscript",
"ep_timesliderdiff"
]
$modules.each |$module| {
exec { "npm_install_$module":
command => "/usr/bin/npm install $module",
unless => "/usr/bin/test -d /usr/share/etherpad-lite/node_modules/$module",
cwd => "/usr/share/etherpad-lite/",
environment => "HOME=/root",
require => Aur::Package["etherpad-lite"],
before => Service["etherpad-lite"],
notify => Service["etherpad-lite"],
}
->
file { "/usr/share/etherpad-lite/node_modules/$module/.ep_initialized":
ensure => present,
mode => "0644",
before => Service["etherpad-lite"],
}
}
service { "etherpad-lite":
enable => true,
ensure => "running",
require => Aur::Package["etherpad-lite"],
subscribe => Aur::Package["etherpad-lite"],
}
$web_host = "outils-1.v.immae.eu"
$pg_db = "etherpad-lite"
$pg_user = "etherpad-lite"
$pg_password = generate_password(24, $password_seed, "postgres_etherpad")
file { "/var/lib/postgres/data/certs":
ensure => directory,
mode => "0700",
owner => $::profile::postgresql::pg_user,
group => $::profile::postgresql::pg_user,
require => File["/var/lib/postgres"],
}
file { "/var/lib/postgres/data/certs/cert.pem":
source => "file:///etc/letsencrypt/live/$web_host/cert.pem",
mode => "0600",
links => "follow",
owner => $::profile::postgresql::pg_user,
group => $::profile::postgresql::pg_user,
require => [Letsencrypt::Certonly[$web_host], File["/var/lib/postgres/data/certs"]]
}
file { "/var/lib/postgres/data/certs/privkey.pem":
source => "file:///etc/letsencrypt/live/$web_host/privkey.pem",
mode => "0600",
links => "follow",
owner => $::profile::postgresql::pg_user,
group => $::profile::postgresql::pg_user,
require => [Letsencrypt::Certonly[$web_host], File["/var/lib/postgres/data/certs"]]
}
postgresql::server::config_entry { "wal_level":
value => "logical",
}
postgresql::server::config_entry { "ssl":
value => "on",
require => Letsencrypt::Certonly[$web_host],
}
postgresql::server::config_entry { "ssl_cert_file":
value => "/var/lib/postgres/data/certs/cert.pem",
require => Letsencrypt::Certonly[$web_host],
}
postgresql::server::config_entry { "ssl_key_file":
value => "/var/lib/postgres/data/certs/privkey.pem",
require => Letsencrypt::Certonly[$web_host],
}
postgresql::server::db { $pg_db:
user => $pg_user,
password => postgresql_password($pg_user, $pg_password),
}
postgresql::server::pg_hba_rule { "allow local access to $pg_user user":
type => 'local',
database => $pg_db,
user => $pg_user,
auth_method => 'ident',
order => "05-01",
}
}