hash.pp 1.9 KB
Newer Older
1
2
3
4
5
6
7
8
9
/*
== Definition: postfix::hash

Creates postfix hashed "map" files. It will create "${name}", and then build
"${name}.db" using the "postmap" command. The map file can then be referred to
using postfix::config.

Parameters:
- *name*: the name of the map file.
10
11
- *ensure*: present/absent, defaults to present.
- *source*: file source.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Requires:
- Class["postfix"]

Example usage:

  node "toto.example.com" {

    include postfix

    postfix::hash { "/etc/postfix/virtual":
      ensure => present,
    }
    postfix::config { "virtual_alias_maps":
      value => "hash:/etc/postfix/virtual"
    }
  }

*/
31
define postfix::hash ($ensure="present", $source = false) {
32

33
  # selinux labels differ from one distribution to another
34
35
  case $operatingsystem {

36
    RedHat, CentOS: {
37
38
39
40
41
42
43
44
45
46
47
48
      case $lsbmajdistrelease {
        "4":     { $postfix_seltype = "etc_t" }
        "5":     { $postfix_seltype = "postfix_etc_t" }
        default: { $postfix_seltype = undef }
      }
    }

    default: {
      $postfix_seltype = undef
    }
  }

49
50
51
52
53
  case $source {
    false: {
      file {"${name}":
        ensure  => $ensure,
        mode    => 600,
54
55
        owner   => root,
        group   => root,
56
57
58
59
60
61
62
63
        seltype => $postfix_seltype,
        require => Package["postfix"],
      }
    }
    default: {
      file {"${name}":
        ensure  => $ensure,
        mode    => 600,
64
65
        owner   => root,
        group   => root,
66
67
68
69
70
        source  => $source,
        seltype => $postfix_seltype,
        require => Package["postfix"],
      }
    }
71
72
73
74
75
76
  }

  file {"${name}.db":
    ensure  => $ensure,
    mode    => 600,
    require => [File["${name}"], Exec["generate ${name}.db"]],
77
    seltype => $postfix_seltype,
78
79
80
81
82
83
  }

  exec {"generate ${name}.db":
    command => "postmap ${name}",
    #creates => "${name}.db", # this prevents postmap from being run !
    subscribe => File["${name}"],
84
85
    refreshonly => true,
    require => Package["postfix"],
86
87
  }
}