puppet/atheme/manifests/init.pp

121 lines
2.6 KiB
Puppet

# Use default values from charybdis if defined.
#
class atheme::params {
if $::charybdis::services_name {
$services_name = $::charybdis::services_name
} else {
$services_name = 'ircservices.localdomain'
}
if $::charybdis::network_name {
$network_name = $::charybdis::network_name
} else {
$network_name = 'IRC Network'
}
if $::charybdis::admin_name {
$admin_name = $::charybdis::admin_name
} else {
$admin_name = 'Administrator'
}
if $::charybdis::admin_email {
$admin_email = $::charybdis::admin_email
} else {
$admin_email = 'root@localhost'
}
if $::charybdis::server_name {
$uplink_name = $::charybdis::server_name
} else {
$uplink_name = undef
}
if $::charybdis::port {
$uplink_port = $::charybdis::port
} else {
$uplink_port = '6667'
}
if $::charybdis::services_password {
$uplink_password = $::charybdis::services_password
} else {
$uplink_password = undef
}
}
# Install Atheme IRC services.
#
class atheme(
$sid='00B',
$services_name=$atheme::params::services_name,
$services_description='Atheme IRC Services',
$network_name=$atheme::params::network_name,
$admin_name=$atheme::params::admin_name,
$admin_email=$atheme::params::admin_email,
$hidehostsuffix='hiddendomain',
$uplink_name=$atheme::params::uplink_name,
$uplink_port=$atheme::params::uplink_port,
$uplink_password=$atheme::params::uplink_password,
$operators=[],
) inherits atheme::params {
case $::operatingsystem {
'ubuntu': { }
default: {
fail("atheme not supported on ${::operatingsystem}")
}
}
if ! $uplink_name {
fail('Must define $uplink_name')
}
if ! $uplink_password {
fail('Must define $uplink_password')
}
package { 'atheme-services':
ensure => installed,
}
file { '/etc/atheme/atheme.conf':
ensure => present,
mode => '0644',
owner => 'root',
group => 'root',
content => template('atheme/atheme.conf.erb'),
require => Package['atheme-services'],
notify => Service['atheme-services'],
}
augeas { 'atheme-enable':
context => '/files/etc/default/atheme-services',
changes => 'set ENABLED 1',
notify => Service['atheme-services'],
}
service { 'atheme-services':
ensure => running,
enable => true,
hasstatus => false,
}
file { '/var/log/atheme':
ensure => directory,
mode => '0640',
owner => 'irc',
group => 'irc',
recurse => true,
require => Service['atheme-services'],
}
if defined(Service['charybdis']) {
Service['atheme-services'] {
require => Service['charybdis'],
}
}
}