From 8b78b15e57c4b802be46c540a16be42fd23435f5 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 25 Jan 2013 14:03:24 -0200 Subject: Switching to parametrized classes --- manifests/config.pp | 2 +- manifests/hash.pp | 2 +- manifests/header_checks_snippet.pp | 2 +- manifests/init.pp | 103 +++++++++++++++++----------------- manifests/mailalias.pp | 2 +- manifests/mailman.pp | 10 ++-- manifests/mta.pp | 31 ++++++---- manifests/satellite.pp | 24 +++++--- manifests/tlspolicy.pp | 13 ++--- manifests/tlspolicy_snippet.pp | 5 +- manifests/transport.pp | 2 +- manifests/transport_regexp.pp | 5 +- manifests/transport_regexp_snippet.pp | 2 +- manifests/virtual.pp | 2 +- manifests/virtual_regexp.pp | 5 +- manifests/virtual_regexp_snippet.pp | 2 +- 16 files changed, 116 insertions(+), 96 deletions(-) (limited to 'manifests') diff --git a/manifests/config.pp b/manifests/config.pp index 8e203a6..ce7af9e 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -18,7 +18,7 @@ Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::config { "smtp_use_tls" => "yes"; diff --git a/manifests/hash.pp b/manifests/hash.pp index 6e2012f..006f881 100644 --- a/manifests/hash.pp +++ b/manifests/hash.pp @@ -17,7 +17,7 @@ Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::hash { "/etc/postfix/virtual": ensure => present, diff --git a/manifests/header_checks_snippet.pp b/manifests/header_checks_snippet.pp index 91d7501..05929a3 100644 --- a/manifests/header_checks_snippet.pp +++ b/manifests/header_checks_snippet.pp @@ -14,7 +14,7 @@ Requires: Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::header_checks_snippet { 'wrong_date': content => 'FIXME'; 'bla': source => 'puppet:///files/etc/postfix/header_checks.d/bla'; diff --git a/manifests/init.pp b/manifests/init.pp index 5b04a0f..20b04f4 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -5,17 +5,55 @@ # delivery and an SMTP server listening on the loopback interface. # # Parameters: -# - *$postfix_smtp_listen*: address on which the smtp service will listen to. defaults to 127.0.0.1 +# - *$smtp_listen*: address on which the smtp service will listen to. defaults to 127.0.0.1 # - *$root_mail_recipient*: who will recieve root's emails. defaults to "nobody" +# - *$anon_sasl*: set $anon_sasl="yes" to hide the originating IP in email +# - *$manage_header_checks*: manage header checks +# - *$manage_tls_policy*: manage tls policy +# - *$manage_transport_regexp*: manage transport regexps +# - *$manage_virtual_regexp*: manage virtual regexps +# - *$tls_fingerprint_digest*: fingerprint digest for tls policy class +# - *$use_amavisd*: set to "yes" to configure amavis +# - *$use_dovecot_lda*: include dovecot declaration at master.cf +# - *$use_schleuder*: whether to include schleuder portion at master.cf +# - *$use_sympa*: whether to include sympa portion at master.cf +# - *$use_firma*: whether to include firma portion at master.cf +# - *$use_mlmmj*: whether to include mlmmj portion at master.cf +# - *$use_submission*: set to "yes" to enable submission section at master.cf +# - *$use_smtps*: set to "yes" to enable smtps section at master.cf +# - *$mastercf_tail*: set this for additional content to be added at the end of master.cf +# - *$inet_interfaces*: which inet interface postfix should listen on +# - *$myorigin*: sets postfix $myorigin configuration # # Example usage: # # node "toto.example.com" { -# $postfix_smtp_listen = "192.168.1.10" -# include postfix +# class { 'postfix': +# smtp_listen => "192.168.1.10" +# } # } # -class postfix { +class postfix( + $smtp_listen = "127.0.0.1", + $root_mail_recipient = "nobody", + $anon_sasl = "no", + $manage_header_checks = "no", + $manage_tls_policy = "no", + $manage_transport_regexp = "no", + $manage_virtual_regexp = "no", + $tls_fingerprint_digest = 'sha1' + $use_amavisd = "no", + $use_dovecot_lda = "no", + $use_schleuder = "no", + $use_sympa = "no", + $use_firma = "no", + $use_mlmmj = "no", + $use_submission = "no", + $use_smtps = "no", + $mastercf_tail = "", + $inet_interfaces = 'all', + $myorigin = $::fqdn +) { # selinux labels differ from one distribution to another case $::operatingsystem { @@ -33,65 +71,30 @@ class postfix { } } - # Default value for various options - case $postfix_smtp_listen { - "": { $postfix_smtp_listen = "127.0.0.1" } - } - case $root_mail_recipient { - "": { $root_mail_recipient = "nobody" } - } - case $postfix_anon_sasl { - "": { $postfix_anon_sasl = "no" } - } - case $postfix_manage_header_checks { - "": { $postfix_manage_header_checks = "no" } - } - case $postfix_manage_tls_policy { - "": { $postfix_manage_tls_policy = "no" } - } - case $postfix_use_amavisd { - "": { $postfix_use_amavisd = "no" } - } - case $postfix_use_dovecot_lda { - "": { $postfix_use_dovecot_lda = "no" } - } - case $postfix_use_schleuder { - "": { $postfix_use_schleuder = "no" } - } - case $postfix_use_sympa { - "": { $postfix_use_sympa = "no" } - } - case $postfix_mastercf_tail { - "": { $postfix_mastercf_tail = "" } - } - case $postfix_inet_interfaces { - "": { $postfix_inet_interfaces = 'all' } - } - case $postfix_myorigin { - "": { $postfix_myorigin = $fqdn } - } # Bootstrap moduledir include common::moduledir module_dir{'postfix': } # Include optional classes - if $postfix_anon_sasl == 'yes' { + if $anon_sasl == 'yes' { include postfix::anonsasl } - if $postfix_manage_header_checks == 'yes' { + if $header_checks == 'yes' { include postfix::header_checks } - if $postfix_manage_tls_policy == 'yes' { - include postfix::tlspolicy + if $manage_tls_policy == 'yes' { + class { 'postfix::tlspolicy': + fingerprint_digest => $tls_fingerprint_digest, + } } - if $postfix_use_amavisd == 'yes' { + if $use_amavisd == 'yes' { include postfix::amavis } - if $postfix_manage_transport_regexp == 'yes' { + if $manage_transport_regexp == 'yes' { include postfix::transport_regexp } - if $postfix_manage_virtual_regexp == 'yes' { + if $manage_virtual_regexp == 'yes' { include postfix::virtual_regexp } @@ -163,9 +166,9 @@ class postfix { # Default configuration parameters postfix::config { - "myorigin": value => "${postfix_myorigin}"; + "myorigin": value => "${myorigin}"; "alias_maps": value => "hash:/etc/aliases"; - "inet_interfaces": value => "${postfix_inet_interfaces}"; + "inet_interfaces": value => "${inet_interfaces}"; } case $::operatingsystem { diff --git a/manifests/mailalias.pp b/manifests/mailalias.pp index cd1af50..2f239ac 100644 --- a/manifests/mailalias.pp +++ b/manifests/mailalias.pp @@ -15,7 +15,7 @@ Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::mailalias { "postmaster": ensure => present, diff --git a/manifests/mailman.pp b/manifests/mailman.pp index cba0848..8c6ee32 100644 --- a/manifests/mailman.pp +++ b/manifests/mailman.pp @@ -4,19 +4,17 @@ # Configures a basic smtp server, able to work for the mailman mailing-list # manager. # -# Parameters: -# - every global variable which works for class "postfix" will work here. -# # Example usage: # # node "toto.example.com" { # include mailman -# include postfix::mailman +# class { 'postfix::mailman': } # } # class postfix::mailman { - $postfix_smtp_listen = "0.0.0.0" - include postfix + class { 'postfix': + smtp_listen => "0.0.0.0", + } postfix::config { "mydestination": value => ""; diff --git a/manifests/mta.pp b/manifests/mta.pp index c36c0bc..f7a865d 100644 --- a/manifests/mta.pp +++ b/manifests/mta.pp @@ -15,14 +15,21 @@ # - *$postfix_mydestination* # - every global variable which works for class "postfix" will work here. # +# Requires: +# - Class["postfix"] +# # Example usage: # # node "toto.example.com" { -# $postfix_relayhost = "mail.example.com" -# $postfix_smtp_listen = "0.0.0.0" -# $postfix_mydestination = "\$myorigin, myapp.example.com" # -# include postfix::mta +# class { 'postfix': +# smtp_listen => "0.0.0.0", +# } +# +# class { 'postfix::mta': +# relayhost => "mail.example.com", +# mydestination => "\$myorigin, myapp.example.com", +# } # # postfix::transport { "myapp.example.com": # ensure => present, @@ -30,22 +37,24 @@ # } # } # -class postfix::mta { +class postfix::mta( + $mydestination = '', + $relayhost = '' +) { - #case $postfix_relayhost { - # "": { fail("Required \$postfix_relayhost variable is not defined.") } + #case $relayhost { + # "": { fail("Required relayhost parameter is not defined.") } #} - case $postfix_mydestination { + case $mydestination { "": { $postfix_mydestination = "\$myorigin" } + default: { $postfix_mydestination = "$mydestination" } } - include postfix - postfix::config { "mydestination": value => $postfix_mydestination; "mynetworks": value => "127.0.0.0/8"; - "relayhost": value => $postfix_relayhost; + "relayhost": value => $relayhost; "virtual_alias_maps": value => "hash:/etc/postfix/virtual"; "transport_maps": value => "hash:/etc/postfix/transport"; } diff --git a/manifests/satellite.pp b/manifests/satellite.pp index 99904dd..63fc466 100644 --- a/manifests/satellite.pp +++ b/manifests/satellite.pp @@ -14,14 +14,18 @@ # Example usage: # # node "toto.local.lan" { -# $postfix_relayhost = "mail.example.com" -# $valid_fqdn = "toto.example.com" -# $root_mail_recipient = "the.sysadmin@example.com" -# -# include postfix::satellite +# class { 'postfix::satellite': +# relayhost => "mail.example.com" +# valid_fqdn => "toto.example.com" +# root_mail_recipient => "the.sysadmin@example.com" +# } # } # -class postfix::satellite { +class postfix::satellite( + $relayhost = '', + $valid_fqdn = '', + $root_mail_recipient = '' +) { # If $valid_fqdn exists, use it to override $fqdn case $valid_fqdn { @@ -29,7 +33,13 @@ class postfix::satellite { default: { $fqdn = "${valid_fqdn}" } } - include postfix::mta + class { 'postfix: + root_mail_recipient => $root_mail_recipient, + } + + class { 'postfix::mta': + relayhost => $relayhost, + } postfix::virtual {"@${valid_fqdn}": ensure => present, diff --git a/manifests/tlspolicy.pp b/manifests/tlspolicy.pp index fb7020d..e1272b9 100644 --- a/manifests/tlspolicy.pp +++ b/manifests/tlspolicy.pp @@ -5,18 +5,15 @@ # via postfix::tlspolicy_snippet defines # # Parameters: -# - $postfix_tls_fingerprint_digest (defaults to sha1) +# - $fingerprint_digest (defaults to sha1) # # Note that this class is useless when used directly. # The postfix::tlspolicy_snippet defines takes care of importing # it anyway. # -class postfix::tlspolicy { - - # Default value for parameters - case $postfix_tls_fingerprint_digest { - "": { $postfix_tls_fingerprint_digest = 'sha1' } - } +class postfix::tlspolicy( + $fingerprint_digest = 'sha1' +) { include common::moduledir module_dir{'postfix/tls_policy': } @@ -37,7 +34,7 @@ class postfix::tlspolicy { } postfix::config { - 'smtp_tls_fingerprint_digest': value => "$postfix_tls_fingerprint_digest"; + 'smtp_tls_fingerprint_digest': value => "$fingerprint_digest"; } postfix::config { 'smtp_tls_policy_maps': diff --git a/manifests/tlspolicy_snippet.pp b/manifests/tlspolicy_snippet.pp index 701528b..b63f812 100644 --- a/manifests/tlspolicy_snippet.pp +++ b/manifests/tlspolicy_snippet.pp @@ -16,8 +16,9 @@ Requires: Example usage: node "toto.example.com" { - $postfix_manage_tls_policy = yes - include postfix + class { 'postfix': + manage_tls_policy => 'yes', + } postfix::tlspolicy_snippet { 'example.com': value => 'encrypt'; '.example.com': value => 'encrypt'; diff --git a/manifests/transport.pp b/manifests/transport.pp index 5ca5554..90c5468 100644 --- a/manifests/transport.pp +++ b/manifests/transport.pp @@ -18,7 +18,7 @@ Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::hash { "/etc/postfix/transport": ensure => present, diff --git a/manifests/transport_regexp.pp b/manifests/transport_regexp.pp index 924ae8a..7670d7d 100644 --- a/manifests/transport_regexp.pp +++ b/manifests/transport_regexp.pp @@ -11,8 +11,9 @@ # Example usage: # # node "toto.example.com" { -# $postfix_manage_transport_regexp = yes -# include postfix +# class { 'postfix': +# manage_transport_regexp => 'yes', +# } # postfix::config { "transport_maps": # value => "hash:/etc/postfix/transport, regexp:/etc/postfix/transport_regexp", # } diff --git a/manifests/transport_regexp_snippet.pp b/manifests/transport_regexp_snippet.pp index eb43c37..2b13ed1 100644 --- a/manifests/transport_regexp_snippet.pp +++ b/manifests/transport_regexp_snippet.pp @@ -14,7 +14,7 @@ Requires: Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::transport_regexp { 'wrong_date': content => 'FIXME'; 'bla': source => 'puppet:///files/etc/postfix/transport_regexp.d/bla'; diff --git a/manifests/virtual.pp b/manifests/virtual.pp index 8fcd53a..d6912a4 100644 --- a/manifests/virtual.pp +++ b/manifests/virtual.pp @@ -18,7 +18,7 @@ Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::hash { "/etc/postfix/virtual": ensure => present, diff --git a/manifests/virtual_regexp.pp b/manifests/virtual_regexp.pp index db41354..ece3117 100644 --- a/manifests/virtual_regexp.pp +++ b/manifests/virtual_regexp.pp @@ -11,8 +11,9 @@ # Example usage: # # node "toto.example.com" { -# $postfix_manage_virtual_regexp = yes -# include postfix +# class { 'postfix': +# manage_virtual_regexp => 'yes', +# } # postfix::config { "virtual_alias_maps": # value => 'hash://postfix/virtual, regexp:/etc/postfix/virtual_regexp', # } diff --git a/manifests/virtual_regexp_snippet.pp b/manifests/virtual_regexp_snippet.pp index b4515b4..bd9a982 100644 --- a/manifests/virtual_regexp_snippet.pp +++ b/manifests/virtual_regexp_snippet.pp @@ -14,7 +14,7 @@ Requires: Example usage: node "toto.example.com" { - include postfix + class { 'postfix': } postfix::virtual_regexp { 'wrong_date': content => 'FIXME'; 'bla': source => 'puppet:///files/etc/postfix/virtual_regexp.d/bla'; -- cgit v1.2.3