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]
}
}
|