puppet-lodgeit/manifests/site.pp

76 lines
2.1 KiB
Puppet

define lodgeit::site($vhost_name="paste.$name.org", $port, $image="") {
include remove_nginx
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[nginx],
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":
mode => 755,
replace => true,
content => template("lodgeit/manage.py.erb"),
notify => Service["${name}-paste"]
}
file { "/srv/lodgeit/${name}/lodgeit/views/layout.html":
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 openstack >/dev/null",
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":
provider => upstart,
ensure => running,
require => [Service["drizzle", "nginx"], Exec["create_database_${name}"]]
}
}