summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Charaoui <jcharaoui@cmaisonneuve.qc.ca>2015-05-14 15:10:31 -0400
committerJerome Charaoui <jcharaoui@cmaisonneuve.qc.ca>2015-05-14 15:10:31 -0400
commit1cf84e2ef338dc77de2c208fd40fbef743f4a7c7 (patch)
treea5265812b402b5808531fe8e2e77b53bc61e307f
parent240fa02355ed56838e5662d971fd693b79e94fee (diff)
Fix module management on Debian, closes #7
Manage files and symlinks directly instead of using a2enmod/a2dismod, which are interactive utilities anyway.
-rw-r--r--manifests/debian/module.pp57
-rw-r--r--manifests/module.pp8
2 files changed, 37 insertions, 28 deletions
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: {