]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/ferm/manifests/init.pp
ferm: change ferm.conf to a template
[dsa-puppet.git] / modules / ferm / manifests / init.pp
index adf1fc88a16996e030953779abdf48c1c723616d..ae4ea19b29085f26bb12a4a0d5daf69d74422c23 100644 (file)
+# = Class: ferm
+#
+# This class installs ferm and sets up rules
+#
+# == Sample Usage:
+#
+#   include ferm
 #
-
 class ferm {
-       package { "ferm" :
-               ensure          => installed,
-       }
+       # realize (i.e. enable) all @ferm::rule virtual resources
+       Ferm::Rule <| |>
+       Ferm::Conf <| |>
 
-       file { "/etc/ferm/dsa.d" :
-               ensure          => directory,
-               owner           => root,
-               group           => root,
-               mode            => 0700,
-               require         => Package["ferm"],
-       }
+       File { mode => '0400' }
 
-       file { "/etc/ferm/conf.d" :
-               ensure          =>directory,
-               owner           => root,
-               group           => root,
-               mode            => 0700,
-               require         => Package["ferm"],
+       package { 'ferm':
+               ensure => installed
        }
-
-       file { "/etc/ferm/ferm.conf" :
-               ensure          => present,
-               owner           => root,
-               group           => root,
-               mode            => 0600,
-               require         => Package["ferm"],
-               notify          => Exec["ferm reload"],
-               source          => "puppet:///ferm/ferm.conf",
+       if ($::lsbmajdistrelease >= 8) {
+               package { 'ulogd2':
+                       ensure => installed
+               }
+               package { 'ulogd':
+                       # Remove instead of purge ulogd because it deletes log files on purge.
+                       ensure => absent
+               }
+       } else {
+               package { 'ulogd':
+                       ensure => installed
+               }
        }
 
-       file { "/etc/ferm/defs.conf" :
-               ensure          => present,
-               owner           => root,
-               group           => root,
-               mode            => 0600,
-               require         => Package["ferm"],
-               notify          => Exec["ferm reload"],
-               source          => "puppet:///ferm/defs.conf",
+       service { 'ferm':
+               hasstatus   => false,
+               status      => '/bin/true',
        }
 
-       exec { "ferm reload":
-               path            => "/etc/init.d:/usr/bin:/usr/sbin:/bin:/sbin",
-               refreshonly     => true,
+       $munin_ips = split(regsubst($::v4ips, '([^,]+)', 'ip_\1', 'G'), ',')
+
+       munin::check { $munin_ips: script => 'ip_', }
+
+       if $v6ips {
+               $munin6_ips = split(regsubst($::v6ips, '([^,]+)', 'ip_\1', 'G'), ',')
+               munin::ipv6check { $munin6_ips: }
        }
 
-       # used as, e.g.:
-       # ferm::rule { "dsa-ssh":
-       #       description     => "Allow SSH from DSA",
-       #       rule            => "proto tcp dport ssh saddr 1.2.3.4 ACCEPT"
-       # }
-       define rule($domain="ip", $chain="INPUT", $rule, $description="", $prio="00") {
-               file { "/etc/ferm/dsa.d/${prio}_${name}":
-                       ensure  => present,
-                       owner   => root,
-                       group   => root,
-                       mode    => 0600,
-                       content => template("ferm/ferm-rule.erb"),
+       # get rid of old stuff
+       $munin6_ip6s = split(regsubst($::v6ips, '([^,]+)', 'ip6_\1', 'G'), ',')
+       munin::check { $munin6_ip6s: ensure => absent }
+
+       file { '/etc/ferm':
+               ensure  => directory,
+               notify  => Service['ferm'],
+               require => Package['ferm'],
+               mode    => '0755'
+       }
+       file { '/etc/ferm/dsa.d':
+               ensure => directory,
+               mode   => '0555',
+               purge   => true,
+               force   => true,
+               recurse => true,
+               source  => 'puppet:///files/empty/',
+       }
+       file { '/etc/ferm/conf.d':
+               ensure => directory,
+               mode   => '0555',
+               purge   => true,
+               force   => true,
+               recurse => true,
+               source  => 'puppet:///files/empty/',
+       }
+       file { '/etc/default/ferm':
+               source  => 'puppet:///modules/ferm/ferm.default',
+               require => Package['ferm'],
+               notify  => Service['ferm'],
+               mode    => '0444',
+       }
+       file { '/etc/ferm/ferm.conf':
+               content => template('ferm/ferm.conf.erb'),
+               notify  => Service['ferm'],
+       }
+       file { '/etc/ferm/conf.d/me.conf':
+               content => template('ferm/me.conf.erb'),
+               notify  => Service['ferm'],
+       }
+       file { '/etc/ferm/conf.d/defs.conf':
+               content => template('ferm/defs.conf.erb'),
+               notify  => Service['ferm'],
+       }
+       file { '/etc/ferm/conf.d/interfaces.conf':
+               content => template('ferm/interfaces.conf.erb'),
+               notify  => Service['ferm'],
+       }
+       if ($::lsbmajdistrelease >= 8) {
+               augeas { 'logrotate_ulogd2':
+                       context => '/files/etc/logrotate.d/ulogd2',
+                       changes => [
+                               'set rule/schedule daily',
+                               'set rule/delaycompress delaycompress',
+                               'set rule/rotate 10',
+                               'set rule/ifempty notifempty',
+                       ],
+               }
+               file { '/etc/logrotate.d/ulogd':
+                       ensure  => absent,
+               }
+               file { '/etc/logrotate.d/ulogd.dpkg-bak':
+                       ensure  => absent,
+               }
+               file { '/etc/logrotate.d/ulogd.dpkg-dist':
+                       ensure  => absent,
+               }
+       } else {
+               file { '/etc/logrotate.d/ulogd':
+                       source  => 'puppet:///modules/ferm/logrotate-ulogd',
+                       mode    => '0444',
+                       require => Package['debian.org'],
                }
        }
+
 }