system-config/modules/lodgeit/manifests/site.pp
James E. Blair a590e41d90 Fix lodgeit puppet bugs.
Add a service dependency and subscribe lodgeit to drizzle refresh
events.

Change-Id: I4ed1d5255e8e46854133f00262904291ff5f1c41
Reviewed-on: https://review.openstack.org/34893
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Elizabeth Krumbach Joseph <lyz@princessleia.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
2013-07-01 19:33:40 +00:00

84 lines
2.2 KiB
Puppet

# == Define: site
#
define lodgeit::site(
$port,
$vhost_name="paste.${name}.org",
$image='') {
include apache
apache::vhost::proxy { $vhost_name:
port => 80,
dest => "http://localhost:${port}",
require => File["/srv/lodgeit/${name}"],
}
file { "/etc/init/${name}-paste.conf":
ensure => present,
content => template('lodgeit/upstart.erb'),
replace => true,
require => Package['apache2'],
notify => Service["${name}-paste"],
}
file { "/srv/lodgeit/${name}":
ensure => directory,
recurse => true,
source => '/tmp/lodgeit-main',
}
if $image != '' {
file { "/srv/lodgeit/${name}/lodgeit/static/${image}":
ensure => present,
source => "puppet:///lodgeit/${image}",
}
}
file { "/srv/lodgeit/${name}/manage.py":
ensure => present,
mode => '0755',
replace => true,
content => template('lodgeit/manage.py.erb'),
notify => Service["${name}-paste"],
}
file { "/srv/lodgeit/${name}/lodgeit/views/layout.html":
ensure => present,
replace => true,
content => template('lodgeit/layout.html.erb'),
}
exec { "create_database_${name}":
command => "drizzle --user=root -e \"create database if not exists ${name};\"",
path => '/bin:/usr/bin',
unless => 'drizzle --disable-column-names -r --batch -e "show databases like \'openstack\'" | grep -q openstack',
require => Service['drizzle'],
}
# create a backup .sql file in git
exec { "create_db_backup_${name}":
command => "touch ${name}.sql && git add ${name}.sql && git commit -am \"Initial commit for ${name}\"",
cwd => '/var/backups/lodgeit_db/',
path => '/bin:/usr/bin',
onlyif => "test ! -f /var/backups/lodgeit_db/${name}.sql",
}
# cron to take a backup and commit it in git
cron { "update_backup_${name}":
user => root,
hour => 6,
minute => 23,
command => "sleep $((RANDOM\\%60+60)) && cd /var/backups/lodgeit_db && drizzledump -uroot ${name} > ${name}.sql && git commit -qam \"Updating DB backup for ${name}\""
}
service { "${name}-paste":
ensure => running,
provider => upstart,
require => [Service['drizzle', 'apache2'], Exec["create_database_${name}"]],
subscribe => Service['drizzle'],
}
}