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