Defined Type: postfix::virtual

Defined in:
manifests/virtual.pp

Overview

Parameters:

  • destination (Variant[String, Array[String]])
  • file (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • ensure (Enum['present', 'absent']) (defaults to: 'present')


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'manifests/virtual.pp', line 41

define postfix::virtual (
  Variant[String, Array[String]] $destination,
  Optional[Stdlib::Absolutepath] $file=undef,
  Enum['present', 'absent']      $ensure='present'
) {
  include postfix
  include ::postfix::augeas

  $_file = pick($file, "${postfix::confdir}/virtual")

  $dest_sets = [$destination].flatten.map |$i, $d| {
    $idx = $i+1
    "set \$entry/destination[${idx}] '${d}'"
  }

  case $ensure {
    'present': {
      $changes = [
        "defnode entry pattern[. = '${name}'] '${name}'",
        'rm $entry/destination',
        $dest_sets,
      ].flatten
    }

    'absent': {
      $changes = "rm pattern[. = '${name}']"
    }

    default: {
      fail "\$ensure must be either 'present' or 'absent', got '${ensure}'"
    }
  }

  augeas {"Postfix virtual - ${name}":
    incl    => $_file,
    lens    => 'Postfix_Virtual.lns',
    changes => $changes,
    require => Augeas::Lens['postfix_virtual'],
  }

  if defined(Package['postfix']) {
    Package['postfix'] -> Postfix::Virtual[$title]
  }

  if defined(Postfix::Hash[$_file]) {
    Postfix::Virtual[$title] ~> Postfix::Hash[$_file]
  }
}