puppet/abusehelper/manifests/init.pp

120 lines
2.6 KiB
Puppet

# Install abusehelper.
#
# === Parameters
#
# $datadir:
# Abusehelper home directory. Defaults to /var/lib/ah2.
#
# $botnets:
# Array of botnet paths to start at boot.
#
# $botuser:
# User to run bots as. Defaults to abusehel.
#
class abusehelper(
$datadir='/var/lib/ah2',
$botnets=undef,
$botuser='abusehel'
) {
if ! $abusehelper_package {
if $::abusehelper_package_latest {
$abusehelper_package = $::abusehelper_package_latest
} else {
fail('Must define $abusehelper_package or $abusehelper_package_latest')
}
}
if ! $idiokit_package {
if $::idiokit_package_latest {
$idiokit_package = $::idiokit_package_latest
} else {
fail('Must define $idiokit_package or $idiokit_package_latest')
}
}
python::pip::install { 'idiokit.tar.gz':
source => "puppet:///files/packages/${idiokit_package}",
} ->
python::pip::install { 'abusehelper.tar.gz':
source => "puppet:///files/packages/${abusehelper_package}",
}
include user::system
realize(User['abusehel'], Group['abusehel'])
if $datadir != '/var/lib/ah2' {
file { '/var/lib/ah2':
ensure => link,
target => $datadir,
}
}
file { $datadir:
ensure => directory,
mode => '2770',
owner => 'abusehel',
group => 'abusehel',
}
file { '/var/lib/ah2/.profile':
ensure => present,
replace => false,
mode => '0600',
owner => 'abusehel',
group => 'abusehel',
content => "umask 007\n",
}
if $botnets {
class { 'abusehelper::init':
botnets => $botnets,
botuser => $botuser,
}
}
}
# Install abusehelper init script.
#
class abusehelper::init($botnets, $botuser) {
file { '/etc/sysconfig/botnet':
ensure => present,
name => $::operatingsystem ? {
'debian' => '/etc/default/botnet',
'ubuntu' => '/etc/default/botnet',
default => '/etc/sysconfig/botnet',
},
mode => '0644',
owner => 'root',
group => 'root',
content => template('abusehelper/botnet.sysconfig.erb'),
before => Service['botnet'],
}
file { '/etc/init.d/botnet':
ensure => present,
mode => '0755',
owner => 'root',
group => 'root',
source => 'puppet:///modules/abusehelper/botnet.init',
notify => Exec['add-service-botnet'],
}
exec { 'add-service-botnet':
path => '/bin:/usr/bin:/sbin:/usr/sbin',
command => $::operatingsystem ? {
'debian' => 'update-rc.d botnet defaults',
'ubuntu' => 'update-rc.d botnet defaults',
default => 'chkconfig --add botnet',
},
refreshonly => true,
before => Service['botnet'],
}
service { 'botnet':
enable => true,
}
}