diff options
author | Micah <micah@riseup.net> | 2015-10-09 19:58:43 +0000 |
---|---|---|
committer | Micah <micah@riseup.net> | 2015-10-09 19:58:43 +0000 |
commit | b57be4fc99274f850e7fe818cd8bbd7e70dba705 (patch) | |
tree | 56830f9df598064751f9ea56da1be10459d6d9e7 | |
parent | 240fa02355ed56838e5662d971fd693b79e94fee (diff) | |
parent | e092c5a13af891738fe563e8cc7d6813aad3e3ea (diff) |
Merge branch 'fix_debian_moduledir' into 'master'
Fix module management on Debian, closes #7
Manage files and symlinks directly instead of using
a2enmod/a2dismod, which are interactive utilities anyway.
See merge request !3
-rw-r--r-- | manifests/debian/module.pp | 73 | ||||
-rw-r--r-- | manifests/module.pp | 8 |
2 files changed, 45 insertions, 36 deletions
diff --git a/manifests/debian/module.pp b/manifests/debian/module.pp index 252948f..ed25515 100644 --- a/manifests/debian/module.pp +++ b/manifests/debian/module.pp @@ -1,41 +1,48 @@ # install/remove apache module on debian/ubuntu systems define apache::debian::module( - $ensure = present, - $package_name = 'absent' + $ensure = present, + $package_name = 'absent', + $conf_source = '', + $conf_content = '', ){ - $modules_dir = "${apache::debian::config_dir}/mods" + $modules_dir = "${apache::debian::config_dir}/mods" - if ($package_name != 'absent') { - package { $package_name: - ensure => $ensure, - notify => Service['apache'], - require => [ File['modules_dir'], Package['apache'] ], - } + if ($package_name != 'absent') { + package { $package_name: + ensure => $ensure, + 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: { |