Puppet Class: dovecot::poolmon

Inherits:
dovecot
Defined in:
manifests/poolmon.pp

Summary

Installs and configures Poolmon.

Overview



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
89
90
91
92
93
94
# File 'manifests/poolmon.pp', line 3

class dovecot::poolmon inherits dovecot {
  if ($dovecot::poolmon_manage) {
    $dirname = "poolmon-${dovecot::poolmon_version}"
    $filename = "${dirname}.tar.gz"
    $install_path = "${dovecot::poolmon_basepath}/${dirname}"

    file { $install_path:
      ensure => directory,
      mode   => '0775',
    }

    # merge default config with user-defined values
    $_archive_params = {
      path          => "/tmp/${filename}",
      source        => "https://github.com/brandond/poolmon/archive/${dovecot::poolmon_version}.tar.gz",
      extract_path  => $dovecot::poolmon_basepath,
      creates       => "${install_path}/poolmon",
      require       => File[$install_path],
    }
    $archive_params = deep_merge($_archive_params, $dovecot::poolmon_archive_params)

    # download poolmon
    archive { $filename:
      * => $archive_params,
    }

    file { $dovecot::poolmon_exec:
      ensure  => link,
      target  => "${install_path}/poolmon",
      require => Archive[$filename],
    }

    # optional file containing credentials for dovecot director
    if ($dovecot::poolmon_config['username'] =~ String) and
    ($dovecot::poolmon_config['password'] =~ String) {
      $poolmon_credfile = "${dovecot::poolmon_config_file}.cred"
      $_template = '<%= $username %><%= "\n" %><%= $password %>'
      file { $poolmon_credfile:
        mode    => '0600',
        content => inline_epp($_template, {
            username => $dovecot::poolmon_config['username'],
            password => $dovecot::poolmon_config['password']
        }),
        before  => [
          File[$dovecot::poolmon_config_file],
          Service['poolmon'],
        ],
      }
    } else {
      $poolmon_credfile = undef
    }

    # create service configuration file
    file { $dovecot::poolmon_config_file:
      mode    => '0600',
      content => epp('dovecot/poolmon.config', {
          logfile       => $dovecot::poolmon_config['logfile'],
          lockfile      => $dovecot::poolmon_config['lockfile'],
          socket        => $dovecot::poolmon_config['socket'],
          log_debug     => $dovecot::poolmon_config['log_debug'],
          scan_interval => $dovecot::poolmon_config['scan_interval'],
          check_timeout => $dovecot::poolmon_config['check_timeout'],
          lmtp_from     => $dovecot::poolmon_config['lmtp_from'],
          lmtp_to       => $dovecot::poolmon_config['lmtp_to'],
          username      => $dovecot::poolmon_config['username'],
          password      => $dovecot::poolmon_config['password'],
          check_port    => $dovecot::poolmon_config['check_port'],
          check_ssl     => $dovecot::poolmon_config['check_ssl'],
          credfile      => $poolmon_credfile,
          provider      => $dovecot::poolmon_service_provider,
          enable        => $dovecot::poolmon_service_enable,
      }),
    }

    # install service script
    file { $dovecot::poolmon_service_file:
      mode    => $dovecot::poolmon_service_mode,
      content => epp("dovecot/poolmon.service.${dovecot::poolmon_service_provider}"),
    }

    # enable/start service
    service { 'poolmon':
      ensure    => $dovecot::poolmon_service_ensure,
      enable    => $dovecot::poolmon_service_enable,
      subscribe => [
        Archive[$filename],
        File[$dovecot::poolmon_config_file],
        File[$dovecot::poolmon_service_file],
      ],
    }
  }
}