0f0b4a6e461136ef344b91d873224ad078d2893c
[mirror/dsa-puppet.git] / modules / xinetd / manifests / service.pp
1 define xinetd::service (
2         $id,
3         $server,
4         $service,
5         $port='',
6         $bind='',
7         $type='',
8         $socket_type=stream,
9         $protocol=tcp,
10         $flags='',
11         $wait=no,
12         $user=root,
13         $group='',
14         $server_args='',
15         $nice=10,
16         $instances=100,
17         $per_source=3,
18         $cps='0 0',
19         $ensure=present,
20         $ferm=true
21 ) {
22         case $ensure {
23                 present,file: {
24                         include xinetd
25                 }
26                 absent: {}
27                 default: { fail("Invalid ensure for '$name'") }
28         }
29
30         if $ferm {
31                 $fermport = $port ? {
32                         "" => $service,
33                         default => $port
34                 }
35
36                 @ferm::rule { "dsa-xinetd-${name}":
37                         description => "Allow traffic to ${service}",
38                         rule        => "&SERVICE(${protocol}, ${fermport})"
39                 }
40         }
41
42         file { "/etc/xinetd.d/${name}":
43                 ensure  => $ensure,
44                 content => template('xinetd/service.erb'),
45                 notify  => Service['xinetd'],
46                 require => Package['xinetd'],
47         }
48 }