From a399f4b49a812db8226d1b130e5984287723a9e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= <raphael.pinson@camptocamp.com>
Date: Mon, 20 May 2013 13:57:19 +0200
Subject: [PATCH] Split init.pp into packages/files/service and add parameters

---
 manifests/files.pp    | 71 +++++++++++++++++++++++++++++++++++++++++++
 manifests/packages.pp | 12 ++++++++
 manifests/params.pp   | 30 ++++++++++++++++++
 manifests/service.pp  |  8 +++++
 4 files changed, 121 insertions(+)
 create mode 100644 manifests/files.pp
 create mode 100644 manifests/packages.pp
 create mode 100644 manifests/params.pp
 create mode 100644 manifests/service.pp

diff --git a/manifests/files.pp b/manifests/files.pp
new file mode 100644
index 0000000..d745901
--- /dev/null
+++ b/manifests/files.pp
@@ -0,0 +1,71 @@
+class postfix::files {
+  include postfix::params
+
+  file { '/etc/mailname':
+    ensure  => present,
+    content => "${::fqdn}\n",
+    seltype => $postfix::params::seltype,
+  }
+
+  # Aliases
+  file { '/etc/aliases':
+    ensure  => present,
+    content => '# file managed by puppet\n',
+    replace => false,
+    seltype => $postfix::params::seltype,
+    notify  => Exec['newaliases'],
+  }
+
+  # Aliases
+  exec { 'newaliases':
+    command     => '/usr/bin/newaliases',
+    refreshonly => true,
+    subscribe   => File['/etc/aliases'],
+  }
+
+  # Config files
+  file { '/etc/postfix/master.cf':
+    ensure  => present,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
+    content => template(
+      $postfix::params::master_os_template,
+      "${module_name}/master.cf.common.erb"
+    ),
+    seltype => $postfix::params::seltype,
+  }
+
+  # Config files
+  file { '/etc/postfix/main.cf':
+    ensure  => present,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
+    source  => "puppet:///modules/${module_name}/main.cf",
+    replace => false,
+    seltype => $postfix::params::seltype,
+  }
+
+  ::postfix::config {
+    'myorigin':         value => $postfix::myorigin;
+    'alias_maps':       value => 'hash:/etc/aliases';
+    'inet_interfaces':  value => $postfix::inet_interfaces;
+  }
+
+  case $::osfamily {
+    'RedHat': {
+      ::postfix::config {
+        'sendmail_path':    value => '/usr/sbin/sendmail.postfix';
+        'newaliases_path':  value => '/usr/bin/newaliases.postfix';
+        'mailq_path':       value => '/usr/bin/mailq.postfix';
+      }
+    }
+    default: {}
+  }
+
+  mailalias {'root':
+    recipient => $postfix::root_mail_recipient,
+    notify    => Exec['newaliases'],
+  }
+}
diff --git a/manifests/packages.pp b/manifests/packages.pp
new file mode 100644
index 0000000..f641003
--- /dev/null
+++ b/manifests/packages.pp
@@ -0,0 +1,12 @@
+class postfix::packages {
+  include postfix::params
+
+  package { 'postfix':
+    ensure => installed,
+  }
+
+  package { 'mailx':
+    ensure => installed,
+    name   => $postfix::params::mailx_package,
+  }
+}
diff --git a/manifests/params.pp b/manifests/params.pp
new file mode 100644
index 0000000..4d00b60
--- /dev/null
+++ b/manifests/params.pp
@@ -0,0 +1,30 @@
+class postfix::params {
+  case $::osfamily {
+    'RedHat': {
+      $seltype = $::lsbmajdistrelease {
+        '4'     => 'etc_t',
+        '5','6' => 'postfix_etc_t',
+        default => undef,
+      }
+
+      $mailx_package = 'mailx'
+
+      $master_os_template = "${module_name}/master.cf.redhat.erb"
+    }
+
+    'Debian': {
+      $seltype = undef,
+
+      $mailx_package = $::lsbdistcodename ? {
+        /sarge|etch|lenny|lucid/ => 'mailx',
+        default                  => 'bsd-mailx',
+      }
+
+      $master_os_template = "${module_name}/master.cf.debian.erb"
+    }
+
+    default: {
+      fail "Unsupported OS family '${::osfamily}'"
+    }
+  }
+}
diff --git a/manifests/service.pp b/manifests/service.pp
new file mode 100644
index 0000000..c3f185d
--- /dev/null
+++ b/manifests/service.pp
@@ -0,0 +1,8 @@
+class postfix::service {
+  service { 'postfix':
+    ensure    => running,
+    enable    => true,
+    hasstatus => true,
+    restart   => '/etc/init.d/postfix reload',
+  }
+}
-- 
GitLab