Projet

Général

Profil

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

root / manifests / set.pp @ 20b96360

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

1
# manage a named set
2
define nftables::set(
3
  Enum['ipv4_addr', 'ipv6_addr', 'ether_addr', 'inet_proto', 'inet_service', 'mark']
4
    $type,
5
  Enum['present','absent']
6
    $ensure = 'present',
7
  Pattern[/^[a-zA-Z0-9_]+$/]
8
    $setname = $title,
9
  Pattern[/^\d\d$/]
10
    $order = '10',
11
  String
12
    $table = 'inet-filter',
13
  Array[Enum['constant', 'dynamic', 'interval', 'timeout'], 0, 4]
14
    $flags = [],
15
  Optional[Integer]
16
    $timeout = undef,
17
  Optional[Integer]
18
    $gc_interval = undef,
19
  Optional[Array[String]]
20
    $elements = undef,
21
  Optional[Integer]
22
    $size = undef,
23
  Optional[Enum['performance', 'memory']]
24
    $policy = undef,
25
  Boolean
26
    $auto_merge = false,
27
  Optional[String]
28
    $content = undef,
29
  Optional[Variant[String,Array[String,1]]]
30
    $source = undef,
31
){
32

    
33
  if $size and $elements {
34
    if length($elements) > $size {
35
      fail("Max size of set ${setname} of ${size} is not being respected")
36
    }
37
  }
38

    
39
  if $ensure == 'present' {
40
    concat::fragment{
41
      "nftables-${table}-set-${setname}":
42
        order  => $order,
43
        target => "nftables-${table}",
44
    }
45

    
46
    if $content {
47
      Concat::Fragment["nftables-${table}-set-${setname}"]{
48
        content => "  ${content}",
49
      }
50
    } elsif $source {
51
      Concat::Fragment["nftables-${table}-set-${setname}"]{
52
        source => $source,
53
      }
54
    } else {
55
      Concat::Fragment["nftables-${table}-set-${setname}"]{
56
        content => epp('nftables/set.epp',
57
          {
58
            'name'        => $setname,
59
            'type'        => $type,
60
            'flags'       => $flags,
61
            'timeout'     => $timeout,
62
            'gc_interval' => $gc_interval,
63
            'elements'    => $elements,
64
            'size'        => $size,
65
            'policy'      => $policy,
66
            'auto_merge'  => $auto_merge,
67
          }
68
        )
69
      }
70
    }
71
  }
72
}