Move logging and related/established out of ferm.conf into a dsa.d rule
[mirror/dsa-puppet.git] / modules / ferm / manifests / init.pp
1 # = Class: ferm
2 #
3 # This class installs ferm and sets up rules
4 #
5 # == Sample Usage:
6 #
7 #   include ferm
8 #
9 class ferm {
10         # realize (i.e. enable) all @ferm::rule virtual resources
11         Ferm::Rule <| |>
12         Ferm::Conf <| |>
13
14         File { mode => '0400' }
15
16         package { 'ferm':
17                 ensure => installed
18         }
19         package { 'ulogd2':
20                 ensure => installed
21         }
22         package { 'ulogd':
23                 # Remove instead of purge ulogd because it deletes log files on purge.
24                 ensure => absent
25         }
26
27         service { 'ferm':
28                 hasstatus   => false,
29                 status      => '/bin/true',
30         }
31
32         $munin_ips = getfromhash($site::nodeinfo, 'misc', 'v4addrs')
33                 .map |$addr| { "ip_${addr}" }
34
35         munin::check { $munin_ips: script => 'ip_', }
36
37         $munin6_ips = getfromhash($site::nodeinfo, 'misc', 'v6addrs')
38                 .map |$addr| { "ip_${addr}" }
39         munin::ipv6check { $munin6_ips: }
40
41         file { '/etc/ferm':
42                 ensure  => directory,
43                 notify  => Service['ferm'],
44                 require => Package['ferm'],
45                 mode    => '0755'
46         }
47         file { '/etc/ferm/dsa.d':
48                 ensure => directory,
49                 mode   => '0555',
50                 purge   => true,
51                 force   => true,
52                 recurse => true,
53                 source  => 'puppet:///files/empty/',
54         }
55         file { '/etc/ferm/conf.d':
56                 ensure => directory,
57                 mode   => '0555',
58                 purge   => true,
59                 force   => true,
60                 recurse => true,
61                 source  => 'puppet:///files/empty/',
62         }
63         file { '/etc/default/ferm':
64                 source  => 'puppet:///modules/ferm/ferm.default',
65                 require => Package['ferm'],
66                 notify  => Service['ferm'],
67                 mode    => '0444',
68         }
69         file { '/etc/ferm/ferm.conf':
70                 content => template('ferm/ferm.conf.erb'),
71                 notify  => Service['ferm'],
72         }
73         file { '/etc/ferm/conf.d/00-init.conf':
74                 content => template('ferm/00-init.conf.erb'),
75                 notify  => Service['ferm'],
76         }
77         file { '/etc/ferm/conf.d/me.conf':
78                 content => template('ferm/me.conf.erb'),
79                 notify  => Service['ferm'],
80         }
81         file { '/etc/ferm/conf.d/defs.conf':
82                 content => template('ferm/defs.conf.erb'),
83                 notify  => Service['ferm'],
84         }
85
86         file { '/etc/ferm/conf.d/50-munin-interfaces.conf':
87                 content => template('ferm/conf.d-munin-interfaces.conf.erb'),
88                 notify  => Service['ferm'],
89         }
90         @ferm::rule { 'dsa-munin-interfaces-in':
91                 prio        => '001',
92                 description => 'munin accounting',
93                 chain       => 'INPUT',
94                 domain      => '(ip ip6)',
95                 rule        => 'daddr ($MUNIN_IPS) NOP'
96         }
97         @ferm::rule { 'dsa-munin-interfaces-out':
98                 prio        => '001',
99                 description => 'munin accounting',
100                 chain       => 'OUTPUT',
101                 domain      => '(ip ip6)',
102                 rule        => 'saddr ($MUNIN_IPS) NOP'
103         }
104
105         file { '/etc/ferm/dsa.d/010-base.conf':
106                 content => template('ferm/dsa.d-010-base.conf.erb'),
107                 notify  => Service['ferm'],
108         }
109
110         augeas { 'logrotate_ulogd2':
111                 context => '/files/etc/logrotate.d/ulogd2',
112                 changes => [
113                         'set rule/schedule daily',
114                         'set rule/delaycompress delaycompress',
115                         'set rule/rotate 10',
116                         'set rule/ifempty notifempty',
117                 ],
118         }
119         file { '/etc/logrotate.d/ulogd':
120                 ensure  => absent,
121         }
122         file { '/etc/logrotate.d/ulogd.dpkg-bak':
123                 ensure  => absent,
124         }
125         file { '/etc/logrotate.d/ulogd.dpkg-dist':
126                 ensure  => absent,
127         }
128
129 }