From 1cf84e2ef338dc77de2c208fd40fbef743f4a7c7 Mon Sep 17 00:00:00 2001 From: Jerome Charaoui Date: Thu, 14 May 2015 15:10:31 -0400 Subject: Fix module management on Debian, closes #7 Manage files and symlinks directly instead of using a2enmod/a2dismod, which are interactive utilities anyway. --- manifests/debian/module.pp | 57 ++++++++++++++++++++++++++-------------------- manifests/module.pp | 8 ++++--- 2 files changed, 37 insertions(+), 28 deletions(-) (limited to 'manifests') diff --git a/manifests/debian/module.pp b/manifests/debian/module.pp index 252948f..fc872b7 100644 --- a/manifests/debian/module.pp +++ b/manifests/debian/module.pp @@ -1,7 +1,9 @@ # install/remove apache module on debian/ubuntu systems define apache::debian::module( $ensure = present, - $package_name = 'absent' + $package_name = 'absent', + $conf_source = '', + $conf_content = '', ){ $modules_dir = "${apache::debian::config_dir}/mods" @@ -11,31 +13,36 @@ define apache::debian::module( notify => Service['apache'], require => [ File['modules_dir'], Package['apache'] ], } + $required_packages = [ 'apache', $package_name ] + } + else { + $required_packages = [ 'apache' ] } - case $ensure { - 'absent','purged': { - exec { "/usr/sbin/a2dismod ${name}": - onlyif => "/bin/sh -c '[ -L ${modules_dir}-enabled/${name}.load ] \\ - && [ ${modules_dir}-enabled/${name}.load -ef ${modules_dir}-available/${name}.load ]'", - notify => Service['apache'], - require => Package['apache'], - } - } - default : { - exec { "/usr/sbin/a2enmod ${name}": - unless => "/bin/sh -c '[ -L ${modules_dir}-enabled/${name}.load ] \\ - && [ ${modules_dir}-enabled/${name}.load -ef ${modules_dir}-available/${name}.load ]'", - notify => Service['apache'], - require => [ - File['modules_dir'], - $package_name ? { - 'absent' => Package['apache'], - default => Package[['apache',$package_name]], - } - ], - } - } + file { + "${modules_dir}-enabled/${name}.load": + ensure => "../mods-available/${name}.load", + notify => Service['apache'], + require => [ File['modules_dir'], Package[$required_packages] ]; + "${modules_dir}-enabled/${name}.conf": + ensure => "../mods-available/${name}.conf", + notify => Service['apache'], + require => [ File['modules_dir'], Package[$required_packages] ]; + "${modules_dir}-available/${name}.conf": + ensure => file, + notify => Service['apache'], + require => [ File['modules_dir'], Package[$required_packages] ]; } -} + if $conf_content != '' { + File["${modules_dir}-available/${name}.conf"] { + content => $conf_content, + } + } + elsif $conf_source != '' { + File["${modules_dir}-available/${name}.conf"] { + source => $conf_source, + } + } + +} diff --git a/manifests/module.pp b/manifests/module.pp index 42639bb..cbcf2d0 100644 --- a/manifests/module.pp +++ b/manifests/module.pp @@ -1,7 +1,8 @@ define apache::module ( $ensure = present, $source = '', - $destination = '', $module = '', $package_name = 'absent' ) -{ + $destination = '', $module = '', $package_name = 'absent', + $conf_content = '', $conf_source = '', +) { $real_module = $module ? { '' => $name, @@ -23,7 +24,8 @@ define apache::module ( } 'debian','ubuntu': { apache::debian::module { "$real_module": - ensure => $ensure, package_name => $package_name + ensure => $ensure, package_name => $package_name, + conf_content => $conf_content, conf_source => $conf_source } } default: { -- cgit v1.2.3