puppet-accessbot/manifests/init.pp

103 lines
2.5 KiB
Puppet

# == Class: accessbot
#
class accessbot(
$channel_file,
$nick,
$password,
$server,
) {
user { 'accessbot':
ensure => present,
home => '/home/accessbot',
shell => '/bin/bash',
gid => 'accessbot',
managehome => true,
require => Group['accessbot'],
}
group { 'accessbot':
ensure => present,
}
# A lot of things need yaml, be conservative requiring this package to avoid
# conflicts with other modules.
if ! defined(Package['python-yaml']) {
package { 'python-yaml':
ensure => present,
}
}
package { 'irc':
ensure => installed,
provider => openstack_pip,
}
exec { 'run_accessbot' :
command => '/usr/local/bin/accessbot -c /etc/accessbot/accessbot.config -l /etc/accessbot/channels.yaml >> /var/log/accessbot/accessbot.log 2>&1',
path => '/usr/local/bin:/usr/bin:/bin/',
user => 'accessbot',
refreshonly => true,
subscribe => File['/etc/accessbot/channels.yaml'],
require => [File['/etc/accessbot/channels.yaml'],
File['/etc/accessbot/accessbot.config'],
File['/usr/local/bin/accessbot'],
Package['irc']],
}
file { '/etc/accessbot':
ensure => directory,
}
file { '/var/log/accessbot':
ensure => directory,
owner => 'accessbot',
group => 'accessbot',
mode => '0775',
require => User['accessbot'],
}
include ::logrotate
logrotate::file { 'accessbot.log':
ensure => present,
log => '/var/log/accessbot/accessbot.log',
options => ['compress',
'copytruncate',
'delaycompress',
'missingok',
'rotate 7',
'daily',
'notifempty',
],
}
file { '/etc/accessbot/accessbot.config':
ensure => present,
content => template('accessbot/accessbot.config.erb'),
group => 'accessbot',
mode => '0440',
owner => 'root',
replace => true,
require => User['accessbot'],
}
file { '/etc/accessbot/channels.yaml':
ensure => present,
source => $channel_file,
group => 'accessbot',
mode => '0440',
owner => 'root',
replace => true,
require => User['accessbot'],
}
file { '/usr/local/bin/accessbot':
ensure => present,
source => 'puppet:///modules/accessbot/accessbot.py',
mode => '0555',
owner => 'root',
group => 'root',
replace => true,
}
}