Skip to content
Snippets Groups Projects
Commit 596e6732 authored by Anton Lindström's avatar Anton Lindström
Browse files

make module puppet style guide compliant

Test with puppet parser validate and puppet-lint.
http://docs.puppetlabs.com/guides/style_guide.html
parent eac37058
No related branches found
No related tags found
No related merge requests found
/* #
== Definition: postfix::config #== Definition: postfix::config
#
Uses the "postconf" command to add/alter/remove options in postfix main #Uses the "postconf" command to add/alter/remove options in postfix main
configuation file (/etc/postfix/main.cf). #configuation file (/etc/postfix/main.cf).
#
Parameters: #Parameters:
- *name*: name of the parameter. #- *name*: name of the parameter.
- *ensure*: present/absent. defaults to present. #- *ensure*: present/absent. defaults to present.
- *value*: value of the parameter. #- *value*: value of the parameter.
#
Requires: #Requires:
- Class["postfix"] #- Class["postfix"]
#
Example usage: #Example usage:
#
node "toto.example.com" { # node "toto.example.com" {
#
include postfix # include postfix
#
postfix::config { # postfix::config {
"smtp_use_tls" => "yes"; # "smtp_use_tls" => "yes";
"smtp_sasl_auth_enable" => "yes"; # "smtp_sasl_auth_enable" => "yes";
"smtp_sasl_password_maps" => "hash:/etc/postfix/my_sasl_passwords"; # "smtp_sasl_password_maps" => "hash:/etc/postfix/my_sasl_passwords";
"relayhost" => "[mail.example.com]:587"; # "relayhost" => "[mail.example.com]:587";
} # }
} # }
#
*/ #
define postfix::config ($ensure = present, $value) { define postfix::config ($value, $ensure = present) {
Augeas { Augeas {
context => "/files/etc/postfix/main.cf", context => '/files/etc/postfix/main.cf',
notify => Service["postfix"], notify => Service['postfix'],
require => File["/etc/postfix/main.cf"], require => File['/etc/postfix/main.cf'],
} }
case $ensure { case $ensure {
...@@ -41,11 +41,11 @@ define postfix::config ($ensure = present, $value) { ...@@ -41,11 +41,11 @@ define postfix::config ($ensure = present, $value) {
changes => "set $name $value", changes => "set $name $value",
} }
} }
absent: { absent: {
augeas { "rm postfix '${name}'": augeas { "rm postfix '${name}'":
changes => "rm $name", changes => "rm $name",
} }
} }
default: {}
} }
} }
/* #== Definition: postfix::hash
== Definition: postfix::hash #
#Creates postfix hashed "map" files. It will create "${name}", and then build
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
"${name}.db" using the "postmap" command. The map file can then be referred to #using postfix::config.
using postfix::config. #
#Parameters:
Parameters: #- *name*: the name of the map file.
- *name*: the name of the map file. #- *ensure*: present/absent, defaults to present.
- *ensure*: present/absent, defaults to present. #- *source*: file source.
- *source*: file source. #
#Requires:
Requires: #- Class["postfix"]
- Class["postfix"] #
#Example usage:
Example usage: #
# node "toto.example.com" {
node "toto.example.com" { #
# include postfix
include postfix #
# postfix::hash { "/etc/postfix/virtual":
postfix::hash { "/etc/postfix/virtual": # ensure => present,
ensure => present, # }
} # postfix::config { "virtual_alias_maps":
postfix::config { "virtual_alias_maps": # value => "hash:/etc/postfix/virtual"
value => "hash:/etc/postfix/virtual" # }
} # }
} #
define postfix::hash ($ensure='present', $source = false) {
*/
define postfix::hash ($ensure="present", $source = false) {
# selinux labels differ from one distribution to another # selinux labels differ from one distribution to another
case $operatingsystem { case $::operatingsystem {
RedHat, CentOS: { RedHat, CentOS: {
case $lsbmajdistrelease { case $::lsbmajdistrelease {
"4": { $postfix_seltype = "etc_t" } '4': { $postfix_seltype = 'etc_t' }
"5","6": { $postfix_seltype = "postfix_etc_t" } '5','6': { $postfix_seltype = 'postfix_etc_t' }
default: { $postfix_seltype = undef } default: { $postfix_seltype = undef }
} }
} }
...@@ -48,40 +46,40 @@ define postfix::hash ($ensure="present", $source = false) { ...@@ -48,40 +46,40 @@ define postfix::hash ($ensure="present", $source = false) {
case $source { case $source {
false: { false: {
file {"${name}": file {$name:
ensure => $ensure, ensure => $ensure,
mode => 600, mode => '0600',
owner => root, owner => root,
group => root, group => root,
seltype => $postfix_seltype, seltype => $postfix_seltype,
require => Package["postfix"], require => Package['postfix'],
} }
} }
default: { default: {
file {"${name}": file {$name:
ensure => $ensure, ensure => $ensure,
mode => 600, mode => '0600',
owner => root, owner => root,
group => root, group => root,
source => $source, source => $source,
seltype => $postfix_seltype, seltype => $postfix_seltype,
require => Package["postfix"], require => Package['postfix'],
} }
} }
} }
file {"${name}.db": file {"${name}.db":
ensure => $ensure, ensure => $ensure,
mode => 600, mode => '0600',
require => [File["${name}"], Exec["generate ${name}.db"]], require => [File[$name], Exec["generate ${name}.db"]],
seltype => $postfix_seltype, seltype => $postfix_seltype,
} }
exec {"generate ${name}.db": exec {"generate ${name}.db":
command => "postmap ${name}", command => "postmap ${name}",
#creates => "${name}.db", # this prevents postmap from being run ! #creates => "${name}.db", # this prevents postmap from being run !
subscribe => File["${name}"], subscribe => File[$name],
refreshonly => true, refreshonly => true,
require => Package["postfix"], require => Package['postfix'],
} }
} }
...@@ -5,25 +5,26 @@ ...@@ -5,25 +5,26 @@
# delivery and an SMTP server listening on the loopback interface. # delivery and an SMTP server listening on the loopback interface.
# #
# Parameters: # Parameters:
# - *$postfix_smtp_listen*: address on which the smtp service will listen to. defaults to 127.0.0.1 # - *$postfix_smtp_listen*: address on which the smtp service will listen to.
# - *$root_mail_recipient*: who will recieve root's emails. defaults to "nobody" # defaults to 127.0.0.1
# - *$root_mail_recipient*: who will recieve root's emails. defaults to 'nobody'
# #
# Example usage: # Example usage:
# #
# node "toto.example.com" { # node 'toto.example.com' {
# $postfix_smtp_listen = "192.168.1.10" # $postfix_smtp_listen = '192.168.1.10'
# include postfix # include postfix
# } # }
# #
class postfix { class postfix {
# selinux labels differ from one distribution to another # selinux labels differ from one distribution to another
case $operatingsystem { case $::operatingsystem {
RedHat, CentOS: { RedHat, CentOS: {
case $lsbmajdistrelease { case $::lsbmajdistrelease {
"4": { $postfix_seltype = "etc_t" } '4': { $postfix_seltype = 'etc_t' }
"5","6": { $postfix_seltype = "postfix_etc_t" } '5','6': { $postfix_seltype = 'postfix_etc_t' }
default: { $postfix_seltype = undef } default: { $postfix_seltype = undef }
} }
} }
...@@ -34,120 +35,124 @@ class postfix { ...@@ -34,120 +35,124 @@ class postfix {
} }
# Default value for various options # Default value for various options
case $postfix_smtp_listen { if $postfix_smtp_listen == '' {
"": { $postfix_smtp_listen = "127.0.0.1" } $postfix_smtp_listen = '127.0.0.1'
} }
case $root_mail_recipient { if $root_mail_recipient == '' {
"": { $root_mail_recipient = "nobody" } $root_mail_recipient = 'nobody'
} }
case $postfix_use_amavisd { if $postfix_use_amavisd == '' {
"": { $postfix_use_amavisd = "no" } $postfix_use_amavisd = 'no'
} }
case $postfix_use_dovecot_lda { if $postfix_use_dovecot_lda == '' {
"": { $postfix_use_dovecot_lda = "no" } $postfix_use_dovecot_lda = 'no'
} }
case $postfix_use_schleuder { if $postfix_use_schleuder == '' {
"": { $postfix_use_schleuder = "no" } $postfix_use_schleuder = 'no'
} }
case $postfix_use_sympa { if $postfix_use_sympa == '' {
"": { $postfix_use_sympa = "no" } $postfix_use_sympa = 'no'
} }
case $postfix_mail_user { if $postfix_mail_user == '' {
"": { $postfix_mail_user = "vmail" } $postfix_mail_user = 'vmail'
} }
$mailx_package = $::lsbdistrelease ? {
'squeeze' => 'bsd-mailx',
'lucid' => 'bsd-mailx',
default => 'mailx',
}
$master_os_template = $::operatingsystem ? {
/RedHat|CentOS/ => 'postfix/master.cf.redhat.erb',
/Debian|Ubuntu|kFreeBSD/ => 'postfix/master.cf.debian.erb',
}
package { "postfix": package { 'postfix':
ensure => installed ensure => installed,
} }
package { "mailx": package { 'mailx':
ensure => installed, ensure => installed,
name => $lsbdistcodename ? { name => $mailx_package,
"squeeze" => "bsd-mailx",
"lucid" => "bsd-mailx",
default => "mailx",
},
} }
service { "postfix": service { 'postfix':
ensure => running, ensure => running,
enable => true, enable => true,
hasstatus => true, hasstatus => true,
restart => "/etc/init.d/postfix reload", restart => '/etc/init.d/postfix reload',
require => Package["postfix"], require => Package['postfix'],
} }
file { "/etc/mailname": file { '/etc/mailname':
ensure => present, ensure => present,
content => "${fqdn}\n", content => "$::fqdn\n",
seltype => $postfix_seltype, seltype => $postfix_seltype,
} }
# Aliases # Aliases
file { "/etc/aliases": file { '/etc/aliases':
ensure => present, ensure => present,
content => "# file managed by puppet\n", content => '# file managed by puppet\n',
replace => false, replace => false,
seltype => $postfix_seltype, seltype => $postfix_seltype,
notify => Exec["newaliases"], notify => Exec['newaliases'],
} }
# Aliases # Aliases
exec { "newaliases": exec { 'newaliases':
command => "/usr/bin/newaliases", command => '/usr/bin/newaliases',
refreshonly => true, refreshonly => true,
require => Package["postfix"], require => Package['postfix'],
subscribe => File["/etc/aliases"], subscribe => File['/etc/aliases'],
} }
# Config files # Config files
file { "/etc/postfix/master.cf": file { '/etc/postfix/master.cf':
ensure => present, ensure => present,
owner => "root", owner => 'root',
group => "root", group => 'root',
mode => "0644", mode => '0644',
content => $operatingsystem ? { content => $master_os_template,
/RedHat|CentOS/ => template("postfix/master.cf.redhat.erb", "postfix/master.cf.common.erb"),
/Debian|Ubuntu|kFreeBSD/ => template("postfix/master.cf.debian.erb", "postfix/master.cf.common.erb"),
},
seltype => $postfix_seltype, seltype => $postfix_seltype,
notify => Service["postfix"], notify => Service['postfix'],
require => Package["postfix"], require => Package['postfix'],
} }
# Config files # Config files
file { "/etc/postfix/main.cf": file { '/etc/postfix/main.cf':
ensure => present, ensure => present,
owner => "root", owner => 'root',
group => "root", group => 'root',
mode => "0644", mode => '0644',
source => "puppet:///modules/postfix/main.cf", source => 'puppet:///modules/postfix/main.cf',
replace => false, replace => false,
seltype => $postfix_seltype, seltype => $postfix_seltype,
notify => Service["postfix"], notify => Service['postfix'],
require => Package["postfix"], require => Package['postfix'],
} }
# Default configuration parameters # Default configuration parameters
postfix::config { postfix::config {
"myorigin": value => "${fqdn}"; 'myorigin': value => $::fqdn;
"alias_maps": value => "hash:/etc/aliases"; 'alias_maps': value => 'hash:/etc/aliases';
"inet_interfaces": value => "all"; 'inet_interfaces': value => 'all';
} }
case $operatingsystem { case $::operatingsystem {
RedHat, CentOS: { RedHat, CentOS: {
postfix::config { postfix::config {
"sendmail_path": value => "/usr/sbin/sendmail.postfix"; 'sendmail_path': value => '/usr/sbin/sendmail.postfix';
"newaliases_path": value => "/usr/bin/newaliases.postfix"; 'newaliases_path': value => '/usr/bin/newaliases.postfix';
"mailq_path": value => "/usr/bin/mailq.postfix"; 'mailq_path': value => '/usr/bin/mailq.postfix';
} }
} }
default: {}
} }
mailalias {"root": mailalias {'root':
recipient => $root_mail_recipient, recipient => $root_mail_recipient,
notify => Exec["newaliases"], notify => Exec['newaliases'],
} }
} }
class postfix::ldap inherits postfix { class postfix::ldap inherits postfix {
Postfix::Config["alias_maps"] { Postfix::Config['alias_maps'] {
value => "'hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf'", value => '"hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf"',
} }
package {"postfix-ldap": } package {'postfix-ldap': }
if ! $postfix_ldap_base { if ! $::postfix_ldap_base {
fail 'Missing $postfix_ldap_base !' fail 'Missing $postfix_ldap_base !'
} }
file {"/etc/postfix/ldap-aliases.cf": file {'/etc/postfix/ldap-aliases.cf':
ensure => present, ensure => present,
owner => root, owner => root,
group => postfix, group => postfix,
content => template("postfix/postfix-ldap-aliases.cf.erb"), content => template('postfix/postfix-ldap-aliases.cf.erb'),
require => Package["postfix-ldap"], require => Package['postfix-ldap'],
} }
} }
...@@ -5,30 +5,33 @@ ...@@ -5,30 +5,33 @@
# manager. # manager.
# #
# Parameters: # Parameters:
# - every global variable which works for class "postfix" will work here. # - every global variable which works for class 'postfix' will work here.
# #
# Example usage: # Example usage:
# #
# node "toto.example.com" { # node 'toto.example.com' {
# include mailman # include mailman
# include postfix::mailman # include postfix::mailman
# } # }
# #
class postfix::mailman { class postfix::mailman {
$postfix_smtp_listen = "0.0.0.0" $postfix_smtp_listen = '0.0.0.0'
include postfix include postfix
postfix::config { postfix::config {
"virtual_alias_maps": value => "hash:/etc/postfix/virtual"; 'virtual_alias_maps':
"transport_maps": value => "hash:/etc/postfix/transport"; value => 'hash:/etc/postfix/virtual';
"mailman_destination_recipient_limit": value => "1"; 'transport_maps':
value => 'hash:/etc/postfix/transport';
'mailman_destination_recipient_limit':
value => '1';
} }
postfix::hash { "/etc/postfix/virtual": postfix::hash { '/etc/postfix/virtual':
ensure => present, ensure => present,
} }
postfix::hash { "/etc/postfix/transport": postfix::hash { '/etc/postfix/transport':
ensure => present, ensure => present,
} }
......
...@@ -13,48 +13,50 @@ ...@@ -13,48 +13,50 @@
# Parameters: # Parameters:
# - *$postfix_relayhost* # - *$postfix_relayhost*
# - *$postfix_mydestination* # - *$postfix_mydestination*
# - every global variable which works for class "postfix" will work here. # - every global variable which works for class 'postfix' will work here.
# #
# Example usage: # Example usage:
# #
# node "toto.example.com" { # node 'toto.example.com' {
# $postfix_relayhost = "mail.example.com" # $postfix_relayhost = 'mail.example.com'
# $postfix_smtp_listen = "0.0.0.0" # $postfix_smtp_listen = '0.0.0.0'
# $postfix_mydestination = "\$myorigin, myapp.example.com" # $postfix_mydestination = '\$myorigin, myapp.example.com'
# #
# include postfix::mta # include postfix::mta
# #
# postfix::transport { "myapp.example.com": # postfix::transport { 'myapp.example.com':
# ensure => present, # ensure => present,
# destination => "local:", # destination => 'local:',
# } # }
# } # }
# #
class postfix::mta { class postfix::mta {
case $postfix_relayhost { case $::postfix_relayhost {
"": { fail("Required \$postfix_relayhost variable is not defined.") } '': { fail('Required \$postfix_relayhost variable is not defined.') }
default: {}
} }
case $postfix_mydestination { case $::postfix_mydestination {
"": { $postfix_mydestination = "\$myorigin" } '': { $postfix_mydestination = '\$myorigin' }
default: {}
} }
include postfix include postfix
postfix::config { postfix::config {
"mydestination": value => $postfix_mydestination; 'mydestination': value => $::postfix_mydestination;
"mynetworks": value => "127.0.0.0/8"; 'mynetworks': value => '127.0.0.0/8';
"relayhost": value => $postfix_relayhost; 'relayhost': value => $::postfix_relayhost;
"virtual_alias_maps": value => "hash:/etc/postfix/virtual"; 'virtual_alias_maps': value => 'hash:/etc/postfix/virtual';
"transport_maps": value => "hash:/etc/postfix/transport"; 'transport_maps': value => 'hash:/etc/postfix/transport';
} }
postfix::hash { "/etc/postfix/virtual": postfix::hash { '/etc/postfix/virtual':
ensure => present, ensure => present,
} }
postfix::hash { "/etc/postfix/transport": postfix::hash { '/etc/postfix/transport':
ensure => present, ensure => present,
} }
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
# #
# Parameters: # Parameters:
# - *valid_fqdn* # - *valid_fqdn*
# - every global variable which works for class "postfix" will work here. # - every global variable which works for class 'postfix' will work here.
# #
# Example usage: # Example usage:
# #
# node "toto.local.lan" { # node 'toto.local.lan' {
# $postfix_relayhost = "mail.example.com" # $postfix_relayhost = 'mail.example.com'
# $valid_fqdn = "toto.example.com" # $valid_fqdn = 'toto.example.com'
# $root_mail_recipient = "the.sysadmin@example.com" # $root_mail_recipient = 'the.sysadmin@example.com'
# #
# include postfix::satellite # include postfix::satellite
# } # }
...@@ -25,14 +25,14 @@ class postfix::satellite { ...@@ -25,14 +25,14 @@ class postfix::satellite {
# If $valid_fqdn exists, use it to override $fqdn # If $valid_fqdn exists, use it to override $fqdn
case $valid_fqdn { case $valid_fqdn {
"": { $valid_fqdn = $fqdn } '': { $valid_fqdn = $::fqdn }
default: { $fqdn = "${valid_fqdn}" } default: { $fqdn = $valid_fqdn }
} }
include postfix::mta include postfix::mta
postfix::virtual { "@${valid_fqdn}": postfix::virtual { "@${valid_fqdn}":
ensure => present, ensure => present,
destination => "root", destination => 'root',
} }
} }
/* #== Definition: postfix::transport
== Definition: postfix::transport #
#Manages content of the /etc/postfix/transport map.
Manages content of the /etc/postfix/transport map. #
#Parameters:
Parameters: #- *name*: name of address postfix will lookup. See transport(5).
- *name*: name of address postfix will lookup. See transport(5). #- *destination*: where the emails will be delivered to. See transport(5).
- *destination*: where the emails will be delivered to. See transport(5). #- *ensure*: present/absent, defaults to present.
- *ensure*: present/absent, defaults to present. #
#Requires:
Requires: #- Class["postfix"]
- Class["postfix"] #- Postfix::Hash["/etc/postfix/transport"]
- Postfix::Hash["/etc/postfix/transport"] #- Postfix::Config["transport_maps"]
- Postfix::Config["transport_maps"] #- common::line (from module common)
- common::line (from module common) #
#Example usage:
Example usage: #
# node "toto.example.com" {
node "toto.example.com" { #
# include postfix
include postfix #
# postfix::hash { "/etc/postfix/transport":
postfix::hash { "/etc/postfix/transport": # ensure => present,
ensure => present, # }
} # postfix::config { "transport_maps":
postfix::config { "transport_maps": # value => "hash:/etc/postfix/transport"
value => "hash:/etc/postfix/transport" # }
} # postfix::transport { "mailman.example.com":
postfix::transport { "mailman.example.com": # ensure => present,
ensure => present, # destination => "mailman",
destination => "mailman", # }
} # }
} #
define postfix::transport ($destination, $ensure='present') {
*/
define postfix::transport ($ensure="present", $destination) {
common::line {"${name} ${destination}": common::line {"${name} ${destination}":
ensure => $ensure, ensure => $ensure,
file => "/etc/postfix/transport", file => '/etc/postfix/transport',
line => "${name} ${destination}", line => "${name} ${destination}",
notify => Exec["generate /etc/postfix/transport.db"], notify => Exec['generate /etc/postfix/transport.db'],
require => Package["postfix"], require => Package['postfix'],
} }
} }
/* #== Definition: postfix::virtual
== Definition: postfix::virtual #
#Manages content of the /etc/postfix/virtual map.
Manages content of the /etc/postfix/virtual map. #
#Parameters:
Parameters: #- *name*: name of address postfix will lookup. See virtual(8).
- *name*: name of address postfix will lookup. See virtual(8). #- *destination*: where the emails will be delivered to. See virtual(8).
- *destination*: where the emails will be delivered to. See virtual(8). #- *ensure*: present/absent, defaults to present.
- *ensure*: present/absent, defaults to present. #
#Requires:
Requires: #- Class["postfix"]
- Class["postfix"] #- Postfix::Hash["/etc/postfix/virtual"]
- Postfix::Hash["/etc/postfix/virtual"] #- Postfix::Config["virtual_alias_maps"]
- Postfix::Config["virtual_alias_maps"] #- common::line (from module common)
- common::line (from module common) #
#Example usage:
Example usage: #
# node "toto.example.com" {
node "toto.example.com" { #
# include postfix
include postfix #
# postfix::hash { "/etc/postfix/virtual":
postfix::hash { "/etc/postfix/virtual": # ensure => present,
ensure => present, # }
} # postfix::config { "virtual_alias_maps":
postfix::config { "virtual_alias_maps": # value => "hash:/etc/postfix/virtual"
value => "hash:/etc/postfix/virtual" # }
} # postfix::virtual { "user@example.com":
postfix::virtual { "user@example.com": # ensure => present,
ensure => present, # destination => "root",
destination => "root", # }
} # }
} #
define postfix::virtual ($destination, $ensure = 'present') {
*/
define postfix::virtual ($ensure="present", $destination) {
common::line {"${name} ${destination}": common::line {"${name} ${destination}":
ensure => $ensure, ensure => $ensure,
file => "/etc/postfix/virtual", file => '/etc/postfix/virtual',
line => "${name} ${destination}", line => "${name} ${destination}",
notify => Exec["generate /etc/postfix/virtual.db"], notify => Exec['generate /etc/postfix/virtual.db'],
require => Package["postfix"], require => Package['postfix'],
} }
} }
include postfix
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment