Puts meetbot under control of puppet

Adds meetbot and an nginx setup to puppet.  See manifests/site.pp for usage

Change-Id: I47dcf2884a06441b482585bf5dae9f7d0bd7e543
This commit is contained in:
Andrew Hutchings 2012-04-15 16:06:41 +01:00
commit e2116d36f2
6 changed files with 1603 additions and 0 deletions

65
manifests/init.pp Normal file
View File

@ -0,0 +1,65 @@
class vcs {
# if we already have the git repo the pull updates
exec { "update_meetbot_repo":
command => "git pull --ff-only",
cwd => "/tmp/meetbot",
path => "/bin:/usr/bin",
onlyif => "test -d /tmp/meetbot"
}
# otherwise get a new clone of it
exec { "clone_meebot_repo":
command => "git clone https://github.com/emonty/meetbot.git /tmp/meetbot",
path => "/bin:/usr/bin",
onlyif => "test ! -d /tmp/meetbot"
}
}
class meetbot {
stage { 'first': before => Stage['main'] }
class { 'vcs':
stage => 'first'
}
user { "meetbot":
shell => "/sbin/nologin",
home => "/var/lib/meetbot",
system => true,
gid => "meetbot",
require => Group["meetbot"]
}
group { "meetbot":
ensure => present
}
package { ['supybot', 'nginx', 'python-twisted']:
ensure => present
}
service { "nginx":
ensure => running,
hasrestart => true
}
file { "/var/lib/meetbot":
ensure => directory,
owner => 'meetbot',
require => User['meetbot']
}
file { "/usr/share/pyshared/supybot/plugins/MeetBot":
ensure => directory,
recurse => true,
source => "/tmp/meetbot/MeetBot",
require => Package["supybot"]
}
file { "/etc/nginx/sites-enabled/default":
ensure => absent,
require => Package['nginx']
}
}

96
manifests/site.pp Normal file
View File

@ -0,0 +1,96 @@
define meetbot::site($nick, $network, $server, $url, $channels, $use_ssl) {
file { "/etc/nginx/sites-available/${name}-meetbot":
ensure => 'present',
content => template("meetbot/nginx.erb"),
replace => 'true',
require => Package[nginx],
notify => Service[nginx]
}
file { "/etc/nginx/sites-enabled/${name}-meetbot":
ensure => link,
target => "/etc/nginx/sites-available/${name}-meetbot",
require => Package[nginx]
}
file { "/var/lib/meetbot/${name}":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot"]
}
file { "/var/lib/meetbot/${name}/conf":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"]
}
file { "/var/lib/meetbot/${name}/data":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"]
}
file { "/var/lib/meetbot/${name}/data/tmp":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}/data"]
}
file { "/var/lib/meetbot/${name}/backup":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"]
}
file { "/var/lib/meetbot/${name}/logs":
ensure => directory,
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"]
}
# set to root/root so meetbot doesn't overwrite
file { "/var/lib/meetbot/${name}.conf":
ensure => present,
content => template("meetbot/supybot.conf.erb"),
owner => 'root',
group => 'root',
require => File["/var/lib/meetbot"],
notify => Service["${name}-meetbot"]
}
file { "/var/lib/meetbot/${name}/ircmeeting":
ensure => directory,
recurse => true,
source => "/tmp/meetbot/ircmeeting",
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"]
}
file { "/var/lib/meetbot/${name}/ircmeeting/meetingLocalConfig.py":
ensure => present,
content => template("meetbot/meetingLocalConfig.py.erb"),
owner => 'meetbot',
require => File["/var/lib/meetbot/${name}/ircmeeting"],
notify => Service["${name}-meetbot"]
}
# we set this file as root ownership because meetbot overwrites it on shutdown
# this means when puppet changes it and restarts meetbot the file is reset
file { "/etc/init/${name}-meetbot.conf":
ensure => 'present',
content => template("meetbot/upstart.erb"),
replace => 'true',
require => File["/var/lib/meetbot/${name}.conf"],
owner => 'root',
notify => Service["${name}-meetbot"]
}
service { "${name}-meetbot":
provider => upstart,
ensure => running,
require => File["/etc/init/${name}-meetbot.conf"]
}
}

View File

@ -0,0 +1,4 @@
class Config(object):
# These two are **required**:
logFileDir = '/var/lib/meetbot/<%= name %>/meetings/'
logUrlPrefix = 'http://<%= url %>/meetings/'

9
templates/nginx.erb Normal file
View File

@ -0,0 +1,9 @@
server {
listen 80;
server_name <%= url %>;
root /var/lib/meetbot/<%= name %>;
location /meetings {
autoindex on;
}
}

1420
templates/supybot.conf.erb Normal file

File diff suppressed because it is too large Load Diff

9
templates/upstart.erb Normal file
View File

@ -0,0 +1,9 @@
description "<%= name %> Meetbot Server"
author "Andrew Hutchings <andrew@linuxjedi.co.uk>"
start on (local-filesystem and net-device-up)
stop on runlevel [!2345]
env PYTHONPATH=/var/lib/meetbot/<%= name %>
exec start-stop-daemon --start --chdir /var/lib/meetbot/openstack --chuid meetbot --name meetbot --startas /usr/bin/python /usr/bin/supybot /var/lib/meetbot/<%= name %>.conf