Projet

Général

Profil

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

root / manifests / rule.pp @ e53053ce

Historique | Voir | Annoter | Télécharger (1,19 ko)

1
# manage a chain rule
2
# Name should be:
3
#   CHAIN_NAME-rulename
4
define nftables::rule(
5
  Enum['present','absent']
6
    $ensure = 'present',
7
  Pattern[/^[a-zA-Z0-9_]+-[a-zA-Z0-9_]+(-\d+)?$/]
8
    $rulename = $title,
9
  Pattern[/^\d\d$/]
10
    $order = '50',
11
  Optional[String]
12
    $table = 'inet-filter',
13
  Optional[String]
14
    $content = undef,
15
  Optional[Variant[String,Array[String,1]]]
16
    $source = undef,
17
){
18

    
19
  if $ensure == 'present' {
20
    $data = split($rulename, '-')
21

    
22
    if $data[2] {
23
      $fragment = "nftables-${table}-chain-${data[0]}-rule-${data[1]}-${data[2]}"
24
    } else {
25
      $fragment = "nftables-${table}-chain-${data[0]}-rule-${data[1]}"
26
    }
27

    
28
    concat::fragment{"${fragment}_header":
29
      content => "#   Start of fragment order:${order} rulename:${rulename}",
30
      order   => "${order}${fragment}a",
31
      target  => "nftables-${table}-chain-${data[0]}",
32
    }
33

    
34
    concat::fragment{
35
      $fragment:
36
        order  => "${order}${fragment}b",
37
        target => "nftables-${table}-chain-${data[0]}",
38
    }
39

    
40
    if $content {
41
      Concat::Fragment[$fragment]{
42
        content => "  ${content}",
43
      }
44
    } else {
45
      Concat::Fragment[$fragment]{
46
        source => $source,
47
      }
48
    }
49
  }
50
}