Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / manifests / chain.pp @ 5df9303f

Historique | Voir | Annoter | Télécharger (1003 octets)

1
# manage a chain
2
define nftables::chain(
3
  Pattern[/^(ip|ip6|inet)-[a-zA-Z0-9_]+$/]
4
    $table = 'inet-filter',
5
  Pattern[/^[a-zA-Z0-9_]+$/]
6
    $chain = $title,
7
  Optional[Pattern[/^\d\d-[a-zA-Z0-9_]+$/]]
8
    $inject = undef,
9
){
10
  $concat_name = "nftables-${table}-chain-${chain}"
11

    
12
  concat{
13
    $concat_name:
14
      path           => "/etc/nftables/puppet/${table}-chain-${chain}.nft",
15
      owner          => root,
16
      group          => root,
17
      mode           => '0640',
18
      ensure_newline => true,
19
      require        => Package['nftables'],
20
      notify         => Service['nftables'],
21
  }
22

    
23
  concat::fragment{
24
    default:
25
      target => $concat_name;
26
    "${concat_name}-header":
27
      order   => '00',
28
      content => "chain ${chain} {";
29
    "${concat_name}-footer":
30
      order   => '99',
31
      content => '}';
32
  }
33

    
34
  if $inject {
35
    $data = split($inject, '-')
36
    nftables::rule{ "${data[1]}-jump_${chain}":
37
      order   => $data[0],
38
      content => "jump ${chain}",
39
    }
40
  }
41
}