131 lines
3.5 KiB
Puppet
131 lines
3.5 KiB
Puppet
define apache::mod (
|
|
$package = undef,
|
|
$package_ensure = 'present',
|
|
$lib = undef,
|
|
$lib_path = $::apache::params::lib_path,
|
|
$id = undef,
|
|
$path = undef,
|
|
$loadfile_name = undef,
|
|
$loadfiles = undef,
|
|
) {
|
|
if ! defined(Class['apache']) {
|
|
fail('You must include the apache base class before using any apache defined resources')
|
|
}
|
|
|
|
$mod = $name
|
|
#include apache #This creates duplicate resources in rspec-puppet
|
|
$mod_dir = $::apache::mod_dir
|
|
|
|
# Determine if we have special lib
|
|
$mod_libs = $::apache::params::mod_libs
|
|
$mod_lib = $mod_libs[$mod] # 2.6 compatibility hack
|
|
if $lib {
|
|
$_lib = $lib
|
|
} elsif $mod_lib {
|
|
$_lib = $mod_lib
|
|
} else {
|
|
$_lib = "mod_${mod}.so"
|
|
}
|
|
|
|
# Determine if declaration specified a path to the module
|
|
if $path {
|
|
$_path = $path
|
|
} else {
|
|
$_path = "${lib_path}/${_lib}"
|
|
}
|
|
|
|
if $id {
|
|
$_id = $id
|
|
} else {
|
|
$_id = "${mod}_module"
|
|
}
|
|
|
|
if $loadfile_name {
|
|
$_loadfile_name = $loadfile_name
|
|
} else {
|
|
$_loadfile_name = "${mod}.load"
|
|
}
|
|
|
|
# Determine if we have a package
|
|
$mod_packages = $::apache::params::mod_packages
|
|
$mod_package = $mod_packages[$mod] # 2.6 compatibility hack
|
|
if $package {
|
|
$_package = $package
|
|
} elsif $mod_package {
|
|
$_package = $mod_package
|
|
} else {
|
|
$_package = undef
|
|
}
|
|
if $_package and ! defined(Package[$_package]) {
|
|
# note: FreeBSD/ports uses apxs tool to activate modules; apxs clutters
|
|
# httpd.conf with 'LoadModule' directives; here, by proper resource
|
|
# ordering, we ensure that our version of httpd.conf is reverted after
|
|
# the module gets installed.
|
|
$package_before = $::osfamily ? {
|
|
'freebsd' => [
|
|
File[$_loadfile_name],
|
|
File["${::apache::params::conf_dir}/${::apache::params::conf_file}"]
|
|
],
|
|
default => File[$_loadfile_name],
|
|
}
|
|
# $_package may be an array
|
|
package { $_package:
|
|
ensure => $package_ensure,
|
|
require => Package['httpd'],
|
|
before => $package_before,
|
|
}
|
|
}
|
|
|
|
file { "${_loadfile_name}":
|
|
ensure => file,
|
|
path => "${mod_dir}/${_loadfile_name}",
|
|
owner => 'root',
|
|
group => $::apache::params::root_group,
|
|
mode => '0644',
|
|
content => template('apache/mod/load.erb'),
|
|
require => [
|
|
Package['httpd'],
|
|
Exec["mkdir ${mod_dir}"],
|
|
],
|
|
before => File[$mod_dir],
|
|
notify => Service['httpd'],
|
|
}
|
|
|
|
if $::osfamily == 'Debian' {
|
|
$enable_dir = $::apache::mod_enable_dir
|
|
file{ "${_loadfile_name} symlink":
|
|
ensure => link,
|
|
path => "${enable_dir}/${_loadfile_name}",
|
|
target => "${mod_dir}/${_loadfile_name}",
|
|
owner => 'root',
|
|
group => $::apache::params::root_group,
|
|
mode => '0644',
|
|
require => [
|
|
File[$_loadfile_name],
|
|
Exec["mkdir ${enable_dir}"],
|
|
],
|
|
before => File[$enable_dir],
|
|
notify => Service['httpd'],
|
|
}
|
|
# Each module may have a .conf file as well, which should be
|
|
# defined in the class apache::mod::module
|
|
# Some modules do not require this file.
|
|
if defined(File["${mod}.conf"]) {
|
|
file{ "${mod}.conf symlink":
|
|
ensure => link,
|
|
path => "${enable_dir}/${mod}.conf",
|
|
target => "${mod_dir}/${mod}.conf",
|
|
owner => 'root',
|
|
group => $::apache::params::root_group,
|
|
mode => '0644',
|
|
require => [
|
|
File["${mod}.conf"],
|
|
Exec["mkdir ${enable_dir}"],
|
|
],
|
|
before => File[$enable_dir],
|
|
notify => Service['httpd'],
|
|
}
|
|
}
|
|
}
|
|
}
|