Try to avoid reserved site keyword
[mirror/dsa-puppet.git] / modules / ferm / manifests / init.pp
index 467af75..daab55f 100644 (file)
+# = Class: ferm
+#
+# This class installs ferm and sets up rules
+#
+# == Sample Usage:
+#
+#   include ferm
+#
 class ferm {
-    define rule($domain="ip", $chain="INPUT", $rule, $description="", $prio="00") {
-        file {
-            "/etc/ferm/dsa.d/${prio}_${name}":
-                ensure  => present,
-                owner   => root,
-                group   => root,
-                mode    => 0400,
-                content => template("ferm/ferm-rule.erb"),
-                notify  => Exec["ferm restart"],
-        }
-    }
+       File { mode => '0400' }
 
-    # realize (i.e. enable) all @ferm::rule virtual resources
-    Ferm::Rule <| |>
+       package { 'ferm':
+               ensure => installed
+       }
+       package { 'ulogd2':
+               ensure => installed
+       }
+       package { 'ulogd':
+               # Remove instead of purge ulogd because it deletes log files on purge.
+               ensure => absent
+       }
 
-    package {
-            ferm: ensure => installed;
-            ulogd: ensure => installed;
-    }
+       service { 'ferm':
+               hasstatus   => false,
+               status      => '/bin/true',
+       }
+       exec {
+               "ferm reload":
+                       command     => "service ferm reload",
+                       refreshonly => true,
+       }
 
-    file {
-        "/etc/ferm/dsa.d":
-            ensure => directory,
-            purge   => true,
-            force   => true,
-            recurse => true,
-            source  => "puppet:///files/empty/",
-            require => Package["ferm"];
-        "/etc/ferm":
-            ensure  => directory,
-            mode    => 0755;
-        "/etc/ferm/conf.d":
-            ensure => directory,
-            require => Package["ferm"];
-        "/etc/default/ferm":
-            source  => "puppet:///ferm/ferm.default",
-            require => Package["ferm"],
-            notify  => Exec["ferm restart"];
-        "/etc/ferm/ferm.conf":
-            source  => "puppet:///ferm/ferm.conf",
-            require => Package["ferm"],
-            mode    => 0400,
-            notify  => Exec["ferm restart"];
-        "/etc/ferm/conf.d/me.conf":
-            content => template("ferm/me.conf.erb"),
-            require => Package["ferm"],
-            mode    => 0400,
-            notify  => Exec["ferm restart"];
-        "/etc/ferm/conf.d/defs.conf":
-            content => template("ferm/defs.conf.erb"),
-            require => Package["ferm"],
-            mode    => 0400,
-            notify  => Exec["ferm restart"];
-        "/etc/ferm/conf.d/interfaces.conf":
-            content => template("ferm/interfaces.conf.erb"),
-            require => Package["ferm"],
-            mode    => 0400,
-            notify  => Exec["ferm restart"];
-        "/etc/logrotate.d/ulogd":
-            source => "puppet:///ferm/logrotate-ulogd",
-            require => Package["logrotate"],
-            ;
-    }
 
-    $munin_ips = split(regsubst($v4ips, '([^,]+)', 'ip_\1', 'G'), ',')
+       $munin_ips = getfromhash($deprecated::nodeinfo, 'misc', 'v4addrs')
+               .map |$addr| { "ip_${addr}" }
 
-    activate_munin_check {
-        $munin_ips: script => "ip_";
-    }
+       munin::check { $munin_ips: script => 'ip_', }
 
-    case extractnodeinfo($nodeinfo, 'buildd') {
-        'true': {
-            file {
-                "/etc/ferm/conf.d/load_ftp_conntrack.conf":
-                    source => "puppet:///ferm/conntrack_ftp.conf",
-                    require => Package["ferm"],
-                    notify  => Exec["ferm restart"];
-            }
-        }
-    }
+       $munin6_ips = getfromhash($deprecated::nodeinfo, 'misc', 'v6addrs')
+               .map |$addr| { "ip_${addr}" }
+       munin::ipv6check { $munin6_ips: }
 
-    case $v6ips {
-        'no': {}
-        default: {
-            $munin6_ips = split(regsubst($v6ips, '([^,]+)', 'ip6_\1', 'G'), ',')
-            activate_munin_check {
-                $munin6_ips: script => "ip6_";
-            }
-        }
-    }
+       file { '/etc/ferm':
+               ensure  => directory,
+               notify  => Exec['ferm reload'],
+               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  => Exec['ferm reload'],
+               mode    => '0444',
+       }
+       file { '/etc/ferm/ferm.conf':
+               content => template('ferm/ferm.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+       file { '/etc/ferm/conf.d/00-init.conf':
+               content => template('ferm/00-init.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+       file { '/etc/ferm/conf.d/me.conf':
+               content => template('ferm/me.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+       file { '/etc/ferm/conf.d/defs.conf':
+               content => template('ferm/defs.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+
+       file { '/etc/ferm/conf.d/50-munin-interfaces.conf':
+               content => template('ferm/conf.d-munin-interfaces.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+       ferm::rule { 'dsa-munin-interfaces-in':
+               prio        => '001',
+               description => 'munin accounting',
+               chain       => 'INPUT',
+               domain      => '(ip ip6)',
+               rule        => 'daddr ($MUNIN_IPS) NOP'
+       }
+       ferm::rule { 'dsa-munin-interfaces-out':
+               prio        => '001',
+               description => 'munin accounting',
+               chain       => 'OUTPUT',
+               domain      => '(ip ip6)',
+               rule        => 'saddr ($MUNIN_IPS) NOP'
+       }
+
+       file { '/etc/ferm/dsa.d/010-base.conf':
+               content => template('ferm/dsa.d-010-base.conf.erb'),
+               notify  => Exec['ferm reload'],
+       }
+
+       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,
+       }
 
-    exec {
-        "ferm restart":
-            command     => "/etc/init.d/ferm restart",
-            refreshonly => true,
-    }
 }
-# vim:set et:
-# vim:set sts=4 ts=4:
-# vim:set shiftwidth=4: