2012-10-30 16:22:20 -04:00
|
|
|
# == Class: etherpad_lite
|
|
|
|
#
|
2012-05-07 16:03:24 +00:00
|
|
|
# Class to install etherpad lite. Puppet acts a lot like a package manager
|
|
|
|
# through this class.
|
|
|
|
#
|
|
|
|
# To use etherpad lite you will want the following includes:
|
|
|
|
# include etherpad_lite
|
|
|
|
# include etherpad_lite::mysql # necessary to use mysql as the backend
|
|
|
|
# include etherpad_lite::site # configures etherpad lite instance
|
2012-08-04 13:10:26 -05:00
|
|
|
# include etherpad_lite::apache # will add reverse proxy on localhost
|
2012-05-07 16:03:24 +00:00
|
|
|
# The defaults for all the classes should just work (tm)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
class etherpad_lite (
|
|
|
|
$ep_user = 'eplite',
|
|
|
|
$base_log_dir = '/var/log',
|
2012-10-25 16:09:13 -07:00
|
|
|
$base_install_dir = '/opt/etherpad-lite',
|
|
|
|
$nodejs_version = 'v0.6.16',
|
2012-10-30 16:22:20 -04:00
|
|
|
$eplite_version = ''
|
2012-05-07 16:03:24 +00:00
|
|
|
) {
|
|
|
|
|
|
|
|
user { $ep_user:
|
|
|
|
shell => '/sbin/nologin',
|
|
|
|
home => "${base_log_dir}/${ep_user}",
|
|
|
|
system => true,
|
|
|
|
gid => $ep_user,
|
2012-10-30 16:22:20 -04:00
|
|
|
require => Group[$ep_user],
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
group { $ep_user:
|
2012-10-30 16:22:20 -04:00
|
|
|
ensure => present,
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Below is what happens when you treat puppet as a package manager.
|
|
|
|
# This is probably bad, but it works and you don't need to roll .debs.
|
2012-10-30 16:22:20 -04:00
|
|
|
file { $base_install_dir:
|
2012-05-07 16:03:24 +00:00
|
|
|
ensure => directory,
|
|
|
|
group => $ep_user,
|
2012-10-30 16:22:20 -04:00
|
|
|
mode => '0664',
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
2012-08-04 09:55:37 -05:00
|
|
|
vcsrepo { "${base_install_dir}/nodejs":
|
2012-10-25 16:09:13 -07:00
|
|
|
ensure => present,
|
2012-08-04 09:55:37 -05:00
|
|
|
provider => git,
|
2012-10-25 16:09:13 -07:00
|
|
|
source => 'https://github.com/joyent/node.git',
|
|
|
|
revision => $nodejs_version,
|
2012-11-13 12:38:52 -08:00
|
|
|
require => [
|
|
|
|
Package['git'],
|
2012-11-29 19:40:14 -05:00
|
|
|
File[$base_install_dir],
|
2012-11-26 11:13:11 -05:00
|
|
|
],
|
2012-06-21 17:52:43 +00:00
|
|
|
}
|
|
|
|
|
2012-10-30 16:22:20 -04:00
|
|
|
package { [
|
|
|
|
'gzip',
|
|
|
|
'curl',
|
|
|
|
'python',
|
|
|
|
'libssl-dev',
|
|
|
|
'pkg-config',
|
|
|
|
'abiword',
|
|
|
|
'build-essential',
|
|
|
|
]:
|
|
|
|
ensure => present,
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
2012-06-21 17:52:43 +00:00
|
|
|
package { ['nodejs', 'npm']:
|
2012-10-30 16:22:20 -04:00
|
|
|
ensure => purged,
|
2012-06-21 17:52:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
buildsource { "${base_install_dir}/nodejs":
|
2012-11-13 12:38:52 -08:00
|
|
|
timeout => 900, # 15 minutes
|
2012-06-21 17:52:43 +00:00
|
|
|
creates => '/usr/local/bin/node',
|
2012-10-30 16:22:20 -04:00
|
|
|
require => [
|
|
|
|
Package['gzip'],
|
|
|
|
Package['curl'],
|
|
|
|
Package['python'],
|
|
|
|
Package['libssl-dev'],
|
|
|
|
Package['pkg-config'],
|
|
|
|
Package['build-essential'],
|
|
|
|
Vcsrepo["${base_install_dir}/nodejs"],
|
|
|
|
],
|
2012-06-21 17:52:43 +00:00
|
|
|
}
|
|
|
|
|
2012-10-25 16:09:13 -07:00
|
|
|
# Allow existing install to exist without modifying its git repo.
|
|
|
|
# But give the option to specify versions for new installs.
|
|
|
|
if $eplite_version != '' {
|
|
|
|
vcsrepo { "${base_install_dir}/etherpad-lite":
|
|
|
|
ensure => present,
|
|
|
|
provider => git,
|
2012-12-05 15:24:46 -08:00
|
|
|
source => 'https://github.com/ether/etherpad-lite.git',
|
2012-10-25 16:09:13 -07:00
|
|
|
owner => $ep_user,
|
|
|
|
revision => $eplite_version,
|
|
|
|
require => Package['git'],
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
vcsrepo { "${base_install_dir}/etherpad-lite":
|
|
|
|
ensure => present,
|
|
|
|
provider => git,
|
|
|
|
source => 'https://github.com/Pita/etherpad-lite.git',
|
|
|
|
owner => $ep_user,
|
|
|
|
require => Package['git'],
|
|
|
|
}
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
exec { 'install_etherpad_dependencies':
|
|
|
|
command => './bin/installDeps.sh',
|
2012-10-30 16:22:20 -04:00
|
|
|
path =>
|
|
|
|
"/usr/bin:/bin:/usr/local/bin:${base_install_dir}/etherpad-lite",
|
2012-05-07 16:03:24 +00:00
|
|
|
user => $ep_user,
|
|
|
|
cwd => "${base_install_dir}/etherpad-lite",
|
|
|
|
environment => "HOME=${base_log_dir}/${ep_user}",
|
2012-10-30 16:22:20 -04:00
|
|
|
require => [
|
|
|
|
Vcsrepo["${base_install_dir}/etherpad-lite"],
|
|
|
|
Buildsource["${base_install_dir}/nodejs"],
|
|
|
|
],
|
2012-06-21 17:52:43 +00:00
|
|
|
before => File["${base_install_dir}/etherpad-lite/settings.json"],
|
2012-10-30 16:22:20 -04:00
|
|
|
creates => "${base_install_dir}/etherpad-lite/node_modules",
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
file { '/etc/init/etherpad-lite.conf':
|
2012-10-30 16:22:20 -04:00
|
|
|
ensure => present,
|
2012-05-07 16:03:24 +00:00
|
|
|
content => template('etherpad_lite/upstart.erb'),
|
2012-10-30 16:22:20 -04:00
|
|
|
replace => true,
|
2012-05-07 16:03:24 +00:00
|
|
|
owner => 'root',
|
|
|
|
}
|
|
|
|
|
|
|
|
file { '/etc/init.d/etherpad-lite':
|
|
|
|
ensure => link,
|
2012-10-30 16:22:20 -04:00
|
|
|
target => '/lib/init/upstart-job',
|
2012-05-07 16:03:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
file { "${base_log_dir}/${ep_user}":
|
|
|
|
ensure => directory,
|
|
|
|
owner => $ep_user,
|
|
|
|
}
|
|
|
|
# end package management ugliness
|
|
|
|
}
|