Merge "Puts meetbot under control of puppet"

This commit is contained in:
Jenkins 2012-04-26 14:47:30 +00:00 committed by Gerrit Code Review
commit 8c4e305392
7 changed files with 1619 additions and 0 deletions

View File

@ -253,6 +253,22 @@ node "planet.openstack.org" {
} }
} }
node "meetbot.openstack.org" {
class { 'openstack_server':
iptables_public_tcp_ports => [80]
}
include meetbot
meetbot::site { "openstack":
nick => "openstack",
network => "FreeNode",
server => "chat.us.freenode.net:7000",
url => "meetbot.openstack.org",
channels => "#openstack #openstack-dev #openstack-meeting",
use_ssl => "True"
}
}
# A bare machine, but with a jenkins user # A bare machine, but with a jenkins user
node /^.*\.template\.openstack\.org$/ { node /^.*\.template\.openstack\.org$/ {
class { 'openstack_template': class { 'openstack_template':

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']
}
}

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/'

View File

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

File diff suppressed because it is too large Load Diff

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