phpservermon/puphpet/puppet/modules/php/manifests/pear/module.pp

120 lines
3.1 KiB
Puppet

# Define: php::pear::module
#
# Installs the defined php pear component
#
# Variables:
# [*use_package*]
# (default=true) - Tries to install pear module with the relevant OS package
# If set to "no" it installs the module via pear command
#
# [*preferred_state*]
# (default="stable") - Define which preferred state to use when installing
# Pear modules via pear via command line (when use_package=false)
#
# [*alldeps*]
# (default="false") - Define if all the available (optional) modules should
# be installed. (when use_package=false)
#
# Usage:
# php::pear::module { packagename: }
# Example:
# php::pear::module { Crypt-CHAP: }
#
define php::pear::module (
$service = '',
$use_package = true,
$preferred_state = 'stable',
$alldeps = false,
$version = 'present',
$repository = 'pear.php.net',
$service_autorestart = '',
$module_prefix = '',
$path = '/usr/bin:/usr/sbin:/bin:/sbin',
$ensure = 'present',
$timeout = 300
) {
include php::pear
$bool_use_package = any2bool($use_package)
$bool_alldeps = any2bool($alldeps)
$manage_alldeps = $bool_alldeps ? {
true => '--alldeps',
false => '',
}
$pear_source = $version ? {
'present' => "${repository}/${name}",
default => "${repository}/${name}-${version}",
}
$pear_exec_command = $ensure ? {
present => "pear -d preferred_state=${preferred_state} install ${manage_alldeps} ${pear_source}",
absent => "pear uninstall -n ${pear_source}",
}
$pear_exec_require = $repository ? {
'pear.php.net' => Package['php-pear'],
default => [ Package['php-pear'],Php::Pear::Config['auto_discover'] ],
}
$pear_exec_unless = $ensure ? {
present => "pear info ${pear_source}",
absent => undef
}
$pear_exec_onlyif = $ensure ? {
present => undef,
absent => "pear info ${pear_source}",
}
$real_service = $service ? {
'' => $php::service,
default => $service,
}
$real_service_autorestart = $service_autorestart ? {
true => "Service[${real_service}]",
false => undef,
'' => $php::service_autorestart ? {
true => "Service[${real_service}]",
false => undef,
}
}
$real_module_prefix = $module_prefix ? {
'' => $php::pear_module_prefix,
default => $module_prefix,
}
$package_name = "${real_module_prefix}${name}"
case $bool_use_package {
true: {
package { "pear-${name}":
ensure => $ensure,
name => $package_name,
notify => $real_service_autorestart,
}
}
default: {
if $repository != 'pear.php.net' {
if !defined (Php::Pear::Config['auto_discover']) {
php::pear::config { 'auto_discover':
value => '1',
}
}
}
exec { "pear-${name}":
command => $pear_exec_command,
path => $path,
unless => $pear_exec_unless,
onlyif => $pear_exec_onlyif,
require => $pear_exec_require,
timeout => $timeout,
}
}
} # End Case
}