From 77578b93bd98bf0bf9cf69e4fa8da75dcf9c236d Mon Sep 17 00:00:00 2001 From: mh Date: Thu, 16 Feb 2012 16:51:56 +0100 Subject: [PATCH] put classes and defines in the proper place To take advantage of puppet's autoloading feature, which will be mandatory sooner or later. We move all the files in their appropriate place. --- .../{classes/postfix-amavis.pp => amavis.pp} | 0 .../postfix-anonsasl.pp => anonsasl.pp} | 0 manifests/classes/postfix.pp | 178 ----------------- manifests/{definitions => }/config.pp | 0 manifests/{definitions => }/hash.pp | 0 ...tfix-header_checks.pp => header_checks.pp} | 0 .../header_checks_snippet.pp | 0 manifests/init.pp | 180 +++++++++++++++++- manifests/{definitions => }/mailalias.pp | 0 .../postfix-mailman.pp => mailman.pp} | 0 manifests/{classes/postfix-mta.pp => mta.pp} | 0 .../postfix-satellite.pp => satellite.pp} | 0 .../postfix-tlspolicy.pp => tlspolicy.pp} | 0 .../{definitions => }/tlspolicy_snippet.pp | 0 manifests/{definitions => }/transport.pp | 0 manifests/{definitions => }/virtual.pp | 0 16 files changed, 178 insertions(+), 180 deletions(-) rename manifests/{classes/postfix-amavis.pp => amavis.pp} (100%) rename manifests/{classes/postfix-anonsasl.pp => anonsasl.pp} (100%) delete mode 100644 manifests/classes/postfix.pp rename manifests/{definitions => }/config.pp (100%) rename manifests/{definitions => }/hash.pp (100%) rename manifests/{classes/postfix-header_checks.pp => header_checks.pp} (100%) rename manifests/{definitions => }/header_checks_snippet.pp (100%) rename manifests/{definitions => }/mailalias.pp (100%) rename manifests/{classes/postfix-mailman.pp => mailman.pp} (100%) rename manifests/{classes/postfix-mta.pp => mta.pp} (100%) rename manifests/{classes/postfix-satellite.pp => satellite.pp} (100%) rename manifests/{classes/postfix-tlspolicy.pp => tlspolicy.pp} (100%) rename manifests/{definitions => }/tlspolicy_snippet.pp (100%) rename manifests/{definitions => }/transport.pp (100%) rename manifests/{definitions => }/virtual.pp (100%) diff --git a/manifests/classes/postfix-amavis.pp b/manifests/amavis.pp similarity index 100% rename from manifests/classes/postfix-amavis.pp rename to manifests/amavis.pp diff --git a/manifests/classes/postfix-anonsasl.pp b/manifests/anonsasl.pp similarity index 100% rename from manifests/classes/postfix-anonsasl.pp rename to manifests/anonsasl.pp diff --git a/manifests/classes/postfix.pp b/manifests/classes/postfix.pp deleted file mode 100644 index 63a50b9..0000000 --- a/manifests/classes/postfix.pp +++ /dev/null @@ -1,178 +0,0 @@ -# -# == Class: postfix -# -# This class provides a basic setup of postfix with local and remote -# 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 -# - *$root_mail_recipient*: who will recieve root's emails. defaults to "nobody" -# -# Example usage: -# -# node "toto.example.com" { -# $postfix_smtp_listen = "192.168.1.10" -# include postfix -# } -# -class postfix { - - # selinux labels differ from one distribution to another - case $operatingsystem { - - RedHat, CentOS: { - case $lsbmajdistrelease { - "4": { $postfix_seltype = "etc_t" } - "5": { $postfix_seltype = "postfix_etc_t" } - default: { $postfix_seltype = undef } - } - } - - default: { - $postfix_seltype = undef - } - } - - # 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' { - include postfix::anonsasl - } - if $postfix_manage_header_checks == 'yes' { - include postfix::header_checks - } - if $postfix_manage_tls_policy == 'yes' { - include postfix::tlspolicy - } - if $postfix_use_amavisd == 'yes' { - include postfix::amavis - } - - package { ["postfix", "mailx"]: - ensure => installed - } - - if $operatingsystem == 'debian' { - Package[mailx] { name => 'bsd-mailx' } - } - - service { "postfix": - ensure => running, - require => Package["postfix"], - } - - file { "/etc/mailname": - ensure => present, - content => "${fqdn}\n", - seltype => $postfix_seltype, - } - - # Aliases - file { "/etc/aliases": - ensure => present, - content => "# file managed by puppet\n", - replace => false, - seltype => $postfix_seltype, - notify => Exec["newaliases"], - } - - # Aliases - exec { "newaliases": - command => "/usr/bin/newaliases", - refreshonly => true, - require => Package["postfix"], - subscribe => File["/etc/aliases"], - } - - # Config files - file { "/etc/postfix/master.cf": - ensure => present, - owner => "root", - group => "root", - mode => "0644", - content => $operatingsystem ? { - Redhat => template("postfix/master.cf.redhat5.erb"), - CentOS => template("postfix/master.cf.redhat5.erb"), - Debian => template("postfix/master.cf.debian-$lsbdistcodename.erb"), - Ubuntu => template("postfix/master.cf.debian-etch.erb"), - }, - seltype => $postfix_seltype, - notify => Service["postfix"], - require => Package["postfix"], - } - - # Config files - file { "/etc/postfix/main.cf": - ensure => present, - owner => "root", - group => "root", - mode => "0644", - source => "puppet:///modules/postfix/main.cf", - replace => false, - seltype => $postfix_seltype, - notify => Service["postfix"], - require => Package["postfix"], - } - - # Default configuration parameters - postfix::config { - "myorigin": value => "${postfix_myorigin}"; - "alias_maps": value => "hash:/etc/aliases"; - "inet_interfaces": value => "${postfix_inet_interfaces}"; - } - - case $operatingsystem { - RedHat, CentOS: { - postfix::config { - "sendmail_path": value => "/usr/sbin/sendmail.postfix"; - "newaliases_path": value => "/usr/bin/newaliases.postfix"; - "mailq_path": value => "/usr/bin/mailq.postfix"; - } - } - } - - postfix::mailalias {"root": - recipient => $root_mail_recipient, - } -} diff --git a/manifests/definitions/config.pp b/manifests/config.pp similarity index 100% rename from manifests/definitions/config.pp rename to manifests/config.pp diff --git a/manifests/definitions/hash.pp b/manifests/hash.pp similarity index 100% rename from manifests/definitions/hash.pp rename to manifests/hash.pp diff --git a/manifests/classes/postfix-header_checks.pp b/manifests/header_checks.pp similarity index 100% rename from manifests/classes/postfix-header_checks.pp rename to manifests/header_checks.pp diff --git a/manifests/definitions/header_checks_snippet.pp b/manifests/header_checks_snippet.pp similarity index 100% rename from manifests/definitions/header_checks_snippet.pp rename to manifests/header_checks_snippet.pp diff --git a/manifests/init.pp b/manifests/init.pp index 6cc1969..63a50b9 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,2 +1,178 @@ -import "classes/*.pp" -import "definitions/*.pp" +# +# == Class: postfix +# +# This class provides a basic setup of postfix with local and remote +# 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 +# - *$root_mail_recipient*: who will recieve root's emails. defaults to "nobody" +# +# Example usage: +# +# node "toto.example.com" { +# $postfix_smtp_listen = "192.168.1.10" +# include postfix +# } +# +class postfix { + + # selinux labels differ from one distribution to another + case $operatingsystem { + + RedHat, CentOS: { + case $lsbmajdistrelease { + "4": { $postfix_seltype = "etc_t" } + "5": { $postfix_seltype = "postfix_etc_t" } + default: { $postfix_seltype = undef } + } + } + + default: { + $postfix_seltype = undef + } + } + + # 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' { + include postfix::anonsasl + } + if $postfix_manage_header_checks == 'yes' { + include postfix::header_checks + } + if $postfix_manage_tls_policy == 'yes' { + include postfix::tlspolicy + } + if $postfix_use_amavisd == 'yes' { + include postfix::amavis + } + + package { ["postfix", "mailx"]: + ensure => installed + } + + if $operatingsystem == 'debian' { + Package[mailx] { name => 'bsd-mailx' } + } + + service { "postfix": + ensure => running, + require => Package["postfix"], + } + + file { "/etc/mailname": + ensure => present, + content => "${fqdn}\n", + seltype => $postfix_seltype, + } + + # Aliases + file { "/etc/aliases": + ensure => present, + content => "# file managed by puppet\n", + replace => false, + seltype => $postfix_seltype, + notify => Exec["newaliases"], + } + + # Aliases + exec { "newaliases": + command => "/usr/bin/newaliases", + refreshonly => true, + require => Package["postfix"], + subscribe => File["/etc/aliases"], + } + + # Config files + file { "/etc/postfix/master.cf": + ensure => present, + owner => "root", + group => "root", + mode => "0644", + content => $operatingsystem ? { + Redhat => template("postfix/master.cf.redhat5.erb"), + CentOS => template("postfix/master.cf.redhat5.erb"), + Debian => template("postfix/master.cf.debian-$lsbdistcodename.erb"), + Ubuntu => template("postfix/master.cf.debian-etch.erb"), + }, + seltype => $postfix_seltype, + notify => Service["postfix"], + require => Package["postfix"], + } + + # Config files + file { "/etc/postfix/main.cf": + ensure => present, + owner => "root", + group => "root", + mode => "0644", + source => "puppet:///modules/postfix/main.cf", + replace => false, + seltype => $postfix_seltype, + notify => Service["postfix"], + require => Package["postfix"], + } + + # Default configuration parameters + postfix::config { + "myorigin": value => "${postfix_myorigin}"; + "alias_maps": value => "hash:/etc/aliases"; + "inet_interfaces": value => "${postfix_inet_interfaces}"; + } + + case $operatingsystem { + RedHat, CentOS: { + postfix::config { + "sendmail_path": value => "/usr/sbin/sendmail.postfix"; + "newaliases_path": value => "/usr/bin/newaliases.postfix"; + "mailq_path": value => "/usr/bin/mailq.postfix"; + } + } + } + + postfix::mailalias {"root": + recipient => $root_mail_recipient, + } +} diff --git a/manifests/definitions/mailalias.pp b/manifests/mailalias.pp similarity index 100% rename from manifests/definitions/mailalias.pp rename to manifests/mailalias.pp diff --git a/manifests/classes/postfix-mailman.pp b/manifests/mailman.pp similarity index 100% rename from manifests/classes/postfix-mailman.pp rename to manifests/mailman.pp diff --git a/manifests/classes/postfix-mta.pp b/manifests/mta.pp similarity index 100% rename from manifests/classes/postfix-mta.pp rename to manifests/mta.pp diff --git a/manifests/classes/postfix-satellite.pp b/manifests/satellite.pp similarity index 100% rename from manifests/classes/postfix-satellite.pp rename to manifests/satellite.pp diff --git a/manifests/classes/postfix-tlspolicy.pp b/manifests/tlspolicy.pp similarity index 100% rename from manifests/classes/postfix-tlspolicy.pp rename to manifests/tlspolicy.pp diff --git a/manifests/definitions/tlspolicy_snippet.pp b/manifests/tlspolicy_snippet.pp similarity index 100% rename from manifests/definitions/tlspolicy_snippet.pp rename to manifests/tlspolicy_snippet.pp diff --git a/manifests/definitions/transport.pp b/manifests/transport.pp similarity index 100% rename from manifests/definitions/transport.pp rename to manifests/transport.pp diff --git a/manifests/definitions/virtual.pp b/manifests/virtual.pp similarity index 100% rename from manifests/definitions/virtual.pp rename to manifests/virtual.pp -- 2.39.5