527881682bcf96ac0b838f175b90cfb0caa3ee82
[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         if getfromhash($site::nodeinfo, 'misc', 'v6addrs') {
38                 $munin6_ips = getfromhash($site::nodeinfo, 'misc', 'v6addrs')
39                         .map |$addr| { "ip_${addr}" }
40                 munin::ipv6check { $munin6_ips: }
41         }
42
43         # get rid of old stuff
44         $munin6_ip6s = split(regsubst($::v6ips, '([^,]+)', 'ip6_\1', 'G'), ',')
45         munin::check { $munin6_ip6s: ensure => absent }
46
47         file { '/etc/ferm':
48                 ensure  => directory,
49                 notify  => Service['ferm'],
50                 require => Package['ferm'],
51                 mode    => '0755'
52         }
53         file { '/etc/ferm/dsa.d':
54                 ensure => directory,
55                 mode   => '0555',
56                 purge   => true,
57                 force   => true,
58                 recurse => true,
59                 source  => 'puppet:///files/empty/',
60         }
61         file { '/etc/ferm/conf.d':
62                 ensure => directory,
63                 mode   => '0555',
64                 purge   => true,
65                 force   => true,
66                 recurse => true,
67                 source  => 'puppet:///files/empty/',
68         }
69         file { '/etc/default/ferm':
70                 source  => 'puppet:///modules/ferm/ferm.default',
71                 require => Package['ferm'],
72                 notify  => Service['ferm'],
73                 mode    => '0444',
74         }
75         file { '/etc/ferm/ferm.conf':
76                 content => template('ferm/ferm.conf.erb'),
77                 notify  => Service['ferm'],
78         }
79         file { '/etc/ferm/conf.d/00-init.conf':
80                 content => template('ferm/00-init.conf.erb'),
81                 notify  => Service['ferm'],
82         }
83         file { '/etc/ferm/conf.d/me.conf':
84                 content => template('ferm/me.conf.erb'),
85                 notify  => Service['ferm'],
86         }
87         file { '/etc/ferm/conf.d/defs.conf':
88                 content => template('ferm/defs.conf.erb'),
89                 notify  => Service['ferm'],
90         }
91         file { '/etc/ferm/conf.d/interfaces.conf':
92                 content => template('ferm/interfaces.conf.erb'),
93                 notify  => Service['ferm'],
94         }
95         augeas { 'logrotate_ulogd2':
96                 context => '/files/etc/logrotate.d/ulogd2',
97                 changes => [
98                         'set rule/schedule daily',
99                         'set rule/delaycompress delaycompress',
100                         'set rule/rotate 10',
101                         'set rule/ifempty notifempty',
102                 ],
103         }
104         file { '/etc/logrotate.d/ulogd':
105                 ensure  => absent,
106         }
107         file { '/etc/logrotate.d/ulogd.dpkg-bak':
108                 ensure  => absent,
109         }
110         file { '/etc/logrotate.d/ulogd.dpkg-dist':
111                 ensure  => absent,
112         }
113
114 }