124 lines
3.3 KiB
Puppet
124 lines
3.3 KiB
Puppet
|
|
# Install custom config to Dovecot
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $name:
|
|
# Config name.
|
|
#
|
|
# $idx:
|
|
# Config load order. Defaults to 99.
|
|
#
|
|
# === Sample usage
|
|
#
|
|
# dovecot::server::config { "passdb-pam": idx => 09 }
|
|
#
|
|
define dovecot::server::config($idx = 90) {
|
|
|
|
include dovecot::server::v2
|
|
|
|
file { "${name}.conf":
|
|
ensure => present,
|
|
path => "/etc/dovecot/conf.d/${idx}-${name}.conf",
|
|
source => [ "puppet:///files/dovecot/${name}.conf",
|
|
"puppet:///modules/dovecot/${name}.conf", ],
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => $::operatingsystem ? {
|
|
"openbsd" => "wheel",
|
|
default => "root",
|
|
},
|
|
notify => Service["dovecot"],
|
|
require => Package["dovecot"],
|
|
}
|
|
}
|
|
|
|
|
|
class dovecot::server::v2 {
|
|
case $operatingsystem {
|
|
centos,fedora: {
|
|
$dovecot_ssl_dir = "/etc/pki/tls"
|
|
}
|
|
default: {
|
|
fail("Dovecot module not supported in ${operatingsystem}.")
|
|
}
|
|
}
|
|
|
|
service { "dovecot":
|
|
ensure => running,
|
|
enable => true,
|
|
require => File["/etc/dovecot/conf.d/98-puppet.conf",
|
|
"/etc/dovecot/conf.d/99-local.conf"],
|
|
}
|
|
|
|
file { "/etc/dovecot/conf.d/98-puppet.conf":
|
|
ensure => present,
|
|
content => template("dovecot/puppet.conf.erb"),
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
require => Package["dovecot"],
|
|
}
|
|
|
|
file { "/etc/dovecot/conf.d/99-local.conf":
|
|
ensure => present,
|
|
source => [
|
|
"puppet:///files/dovecot/local.conf",
|
|
"puppet:///modules/dovecot/empty",
|
|
],
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
require => Package["dovecot"],
|
|
}
|
|
|
|
if $dovecot_ssl_csr {
|
|
file { "$dovecot_ssl_dir/private/dovecot.csr":
|
|
ensure => present,
|
|
source => $dovecot_ssl_csr,
|
|
mode => "0640",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
}
|
|
}
|
|
|
|
if $dovecot_ssl_ca {
|
|
file { "$dovecot_ssl_dir/certs/dovecot.ca.crt":
|
|
ensure => present,
|
|
source => $dovecot_ssl_ca,
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
}
|
|
}
|
|
|
|
if $dovecot_ssl_cert {
|
|
file { "$dovecot_ssl_dir/certs/dovecot.crt":
|
|
ensure => present,
|
|
source => $dovecot_ssl_cert,
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
}
|
|
} else {
|
|
fail("You need to define an ssl_cert in your node manifest.")
|
|
}
|
|
|
|
if $dovecot_ssl_key {
|
|
file { "$dovecot_ssl_dir/private/dovecot.key":
|
|
ensure => present,
|
|
source => $dovecot_ssl_key,
|
|
mode => "0600",
|
|
owner => "root",
|
|
group => "root",
|
|
notify => Service["dovecot"],
|
|
}
|
|
} else {
|
|
fail("You need to define an ssl_key in your node manifest.")
|
|
}
|
|
}
|