]> 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 4332dad78631a5198756c78b9e560fa32c7fffef..ae4ea19b29085f26bb12a4a0d5daf69d74422c23 100644 (file)
@@ -1,33 +1,51 @@
+# = Class: ferm
+#
+# This class installs ferm and sets up rules
+#
+# == Sample Usage:
+#
+#   include ferm
+#
 class ferm {
        # realize (i.e. enable) all @ferm::rule virtual resources
        Ferm::Rule <| |>
+       Ferm::Conf <| |>
 
        File { mode => '0400' }
 
        package { 'ferm':
                ensure => installed
        }
-       package { 'ulogd':
-               ensure => installed
+       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
+               }
        }
 
        service { 'ferm':
                hasstatus   => false,
                status      => '/bin/true',
-               refreshonly => true,
        }
 
-       $munin_ips = split(regsubst($v4ips, '([^,]+)', 'ip_\1', 'G'), ',')
+       $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::check { $munin6_ips: script => 'ip_', }
+               $munin6_ips = split(regsubst($::v6ips, '([^,]+)', 'ip_\1', 'G'), ',')
+               munin::ipv6check { $munin6_ips: }
        }
 
        # get rid of old stuff
-       $munin6_ip6s = split(regsubst($v6ips, '([^,]+)', 'ip6_\1', 'G'), ',')
+       $munin6_ip6s = split(regsubst($::v6ips, '([^,]+)', 'ip6_\1', 'G'), ',')
        munin::check { $munin6_ip6s: ensure => absent }
 
        file { '/etc/ferm':
@@ -38,6 +56,7 @@ class ferm {
        }
        file { '/etc/ferm/dsa.d':
                ensure => directory,
+               mode   => '0555',
                purge   => true,
                force   => true,
                recurse => true,
@@ -45,32 +64,58 @@ class ferm {
        }
        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':
-               source  => 'puppet:///modules/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'],
        }
-       file { '/etc/logrotate.d/ulogd':
-               source => 'puppet:///modules/ferm/logrotate-ulogd',
-               require => Package['debian.org'],
-       }
-
-       if getfromhash($site::nodeinfo, 'buildd') {
-               file { '/etc/ferm/conf.d/load_ftp_conntrack.conf':
-                       source => 'puppet:///modules/ferm/conntrack_ftp.conf',
+       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'],
                }
        }