puppet-ptgbot/manifests/init.pp

340 lines
9.0 KiB
Puppet

# == Class: ptgbot
#
class ptgbot(
$nick,
$password,
$channel,
$vhost_name,
) {
include pip
user { 'ptgbot':
ensure => present,
home => '/home/ptgbot',
shell => '/bin/bash',
gid => 'ptgbot',
managehome => true,
require => Group['ptgbot'],
}
group { 'ptgbot':
ensure => present,
}
vcsrepo { '/opt/ptgbot':
ensure => latest,
provider => git,
revision => 'master',
source => 'https://git.openstack.org/openstack/ptgbot',
}
exec { 'install_ptgbot' :
command => 'pip3 install /opt/ptgbot',
path => '/usr/local/bin:/usr/bin:/bin/',
refreshonly => true,
require => Class['pip'],
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/etc/init.d/ptgbot':
ensure => present,
group => 'root',
mode => '0555',
owner => 'root',
require => Vcsrepo['/opt/ptgbot'],
source => 'puppet:///modules/ptgbot/ptgbot.init',
}
service { 'ptgbot':
enable => true,
hasrestart => true,
require => File['/etc/init.d/ptgbot'],
subscribe => [
Vcsrepo['/opt/ptgbot'],
File['/etc/ptgbot/ptgbot_config.json'],
],
}
file { '/etc/ptgbot':
ensure => directory,
}
file { '/var/log/ptgbot':
ensure => directory,
owner => 'ptgbot',
group => 'ptgbot',
mode => '0775',
require => User['ptgbot'],
}
file { '/var/run/ptgbot':
ensure => directory,
owner => 'ptgbot',
group => 'ptgbot',
mode => '0775',
require => User['ptgbot'],
}
file { '/var/lib/ptgbot':
ensure => directory,
owner => 'ptgbot',
group => 'ptgbot',
mode => '0775',
require => User['ptgbot'],
}
file { '/var/lib/ptgbot/www':
ensure => directory,
owner => 'ptgbot',
group => 'ptgbot',
mode => '0775',
require => [File['/var/lib/ptgbot'],
User['ptgbot']]
}
file { '/var/lib/ptgbot/www/etherpads.html':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/etherpads.html',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/index.html':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/index.html',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/ptg.html':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/ptg.html',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/signage.html':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/signage.html',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/logo.png':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/logo.png',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/bootstrap-3.3.7.min.css':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/bootstrap-3.3.7.min.css',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/bootstrap-3.3.7.min.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/bootstrap-3.3.7.min.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/ptg.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/ptg.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/index.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/index.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/motd.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/motd.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/jquery-1.9.1.min.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/jquery-1.9.1.min.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/handlebars-4.0.6.js':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']],
source => '/opt/ptgbot/html/handlebars-4.0.6.js',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/fonts':
ensure => directory,
owner => 'ptgbot',
group => 'ptgbot',
mode => '0775',
require => [File['/var/lib/ptgbot/www'],
User['ptgbot']]
}
file { '/var/lib/ptgbot/www/fonts/glyphicons-halflings-regular.eot':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www/fonts'],
User['ptgbot']],
source => '/opt/ptgbot/html/fonts/glyphicons-halflings-regular.eot',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/fonts/glyphicons-halflings-regular.svg':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www/fonts'],
User['ptgbot']],
source => '/opt/ptgbot/html/fonts/glyphicons-halflings-regular.svg',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/fonts/glyphicons-halflings-regular.ttf':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www/fonts'],
User['ptgbot']],
source => '/opt/ptgbot/html/fonts/glyphicons-halflings-regular.ttf',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/fonts/glyphicons-halflings-regular.woff':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www/fonts'],
User['ptgbot']],
source => '/opt/ptgbot/html/fonts/glyphicons-halflings-regular.woff',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/var/lib/ptgbot/www/fonts/glyphicons-halflings-regular.woff2':
ensure => present,
group => 'ptgbot',
mode => '0444',
owner => 'root',
replace => true,
require => [File['/var/lib/ptgbot/www/fonts'],
User['ptgbot']],
source => '/opt/ptgbot/html/fonts/glyphicons-halflings-regular.woff2',
subscribe => Vcsrepo['/opt/ptgbot'],
}
file { '/etc/ptgbot/logging.config':
ensure => present,
group => 'ptgbot',
mode => '0440',
owner => 'root',
replace => true,
require => User['ptgbot'],
source => 'puppet:///modules/ptgbot/logging.config',
}
file { '/etc/ptgbot/ptgbot_config.json':
ensure => present,
content => template('ptgbot/ptgbot_config.json.erb'),
group => 'ptgbot',
mode => '0440',
owner => 'root',
replace => true,
require => User['ptgbot'],
}
httpd::vhost { $vhost_name:
port => 80,
docroot => '/var/lib/ptgbot/www',
priority => '50',
template => 'ptgbot/vhost.erb',
require => File['/var/lib/ptgbot/www'],
vhost_name => $vhost_name,
}
}
# vim:sw=2:ts=2:expandtab:textwidth=79