From 0f25d1ed6a90e3a1e7493ee460ca4a39789df506 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Fri, 1 Mar 2013 11:19:51 -0500 Subject: [PATCH] Update exim module to work on RHEL. Parameterizes the exim module so that it can support multiple distributions. As part of this patch I also removed the explicit install of exim4-base and exim4-config on Ubuntu. Just installing exim4-daemon-light should be fine. Change-Id: Ie09c5fa01509ebfadc92b8540f04181a2b13b667 Reviewed-on: https://review.openstack.org/23289 Reviewed-by: Jeremy Stanley Reviewed-by: James E. Blair Reviewed-by: Clark Boylan Reviewed-by: Monty Taylor Approved: James E. Blair Tested-by: Jenkins --- manifests/init.pp | 30 ++++++++++++++---------------- manifests/params.pp | 23 +++++++++++++++++++++++ templates/exim4.conf.erb | 3 ++- 3 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 manifests/params.pp diff --git a/manifests/init.pp b/manifests/init.pp index 244a59c..3181483 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -2,31 +2,29 @@ class exim( $mailman_domains = [], $sysadmin = [] ) { - package { 'exim4-base': + + include exim::params + + package { $::exim::params::package: ensure => present, } - package { 'exim4-config': - ensure => present, + if ($::operatingsystem == 'Redhat') { + service { 'postfix': + ensure => stopped + } } - package { 'exim4-daemon-light': - ensure => present, - require => [ - Package[exim4-base], - Package[exim4-config] - ], - } - - service { 'exim4': + service { 'exim': ensure => running, + name => $::exim::params::service_name, hasrestart => true, - subscribe => File['/etc/exim4/exim4.conf'], + subscribe => File[$::exim::params::config_file], } - file { '/etc/exim4/exim4.conf': + file { $::exim::params::config_file: ensure => present, - content => template('exim/exim4.conf.erb'), + content => template("${module_name}/exim4.conf.erb"), group => 'root', mode => '0444', owner => 'root', @@ -35,7 +33,7 @@ class exim( file { '/etc/aliases': ensure => present, - content => template('exim/aliases.erb'), + content => template("${module_name}/aliases.erb"), group => 'root', mode => '0444', owner => 'root', diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..13adb1d --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,23 @@ +# Class: exim::params +# +# This class holds parameters that need to be +# accessed by other classes. +class exim::params { + case $::osfamily { + 'Redhat': { + $package = 'exim' + $service_name = 'exim' + $config_file = '/etc/exim/exim.conf' + $conf_dir = '/etc/exim/' + } + 'Debian', 'Ubuntu': { + $package = 'exim4-daemon-light' + $service_name = 'exim4' + $config_file = '/etc/exim4/exim4.conf' + $conf_dir = '/etc/exim4' + } + default: { + fail("Unsupported osfamily: ${::osfamily} The 'exim' module only supports osfamily Ubuntu or Redhat(slaves only).") + } + } +} diff --git a/templates/exim4.conf.erb b/templates/exim4.conf.erb index 369d8df..6d9965f 100644 --- a/templates/exim4.conf.erb +++ b/templates/exim4.conf.erb @@ -37,7 +37,8 @@ # # ########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ########### -CONFDIR = /etc/exim4 +CONFDIR = <%= scope.lookupvar('exim::params::conf_dir') %> + ###################################################################### # MAIN CONFIGURATION SETTINGS #