root / manifests / chain.pp @ c8894978
Historique | Voir | Annoter | Télécharger (1003 octets)
1 | 8efbdf9a | tr | # manage a chain |
---|---|---|---|
2 | define nftables::chain( |
||
3 | 5df9303f | tr | Pattern[/^(ip|ip6|inet)-[a-zA-Z0-9_]+$/] |
4 | $table = 'inet-filter', |
||
5 | 8efbdf9a | tr | 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 | } |