diff --git a/manifests/extension.pp b/manifests/extension.pp index 53ca6603..f048abb5 100644 --- a/manifests/extension.pp +++ b/manifests/extension.pp @@ -62,7 +62,9 @@ $package, $provider = undef, $pipe = undef, - $source = undef + $source = undef, + $sapis = ['cli', 'fpm', 'apache2'], + $priority = 20, ) { if $provider == 'pecl' { @@ -72,6 +74,13 @@ source => $source, pipe => $pipe; } + $uniqe_sapis = suffix($sapis, $package) + php::sapi { $uniqe_sapis: + extension => $package, + ensure => $ensure, + priority => $priority, + require => Package[$package], + } } elsif $provider == 'dpkg' { package { $package: ensure => $ensure, diff --git a/manifests/extension/disenable.pp b/manifests/extension/disenable.pp new file mode 100644 index 00000000..22557d90 --- /dev/null +++ b/manifests/extension/disenable.pp @@ -0,0 +1,38 @@ +define php::extension::disenable ( + $extension, + $ensure = 'present', + $priority = 20, +) { + + $sapi = delete($title, $extension) + + Exec { + # fact that php5-common does not guarantee that extension is installed + require => Package[$extension], + # default path minus games + path => '/bin:/usr/bin:/usr/local/bin: /sbin:/usr/sbin:/usr/local/sbin', + } + + validate_re($ensure, '^(latest|present|installed|absent)$') +# no need for qualified since path is defined + $command = $ensure ? { + 'absent' => 'php5dismod', + default => 'php5enmod' + } +# same as above + $unless = $ensure ? { + 'absent' => 'test ! -e', + default => 'test -e', + } +# regex is idempotent. no changes will be made if there is a space after semicolon already + exec { "priority_${sapi}_${extension}": + command => "sed -ie 's/^;priority/; priority/g' /etc/php5/mods-available/${extension}.ini", + onlyif => "test -e /etc/php5/mods-available/${extension}.ini", + } +# extension class should be responsible for service notification + exec { "${command} -s ${sapi} ${extension}": + unless => "${unless} /etc/php5/${sapi}/conf.d/${priority}-${extension}.ini", + require => Exec["priority_${sapi}_${extension}"] + } + +} diff --git a/manifests/sapi.pp b/manifests/sapi.pp new file mode 100644 index 00000000..fac411d0 --- /dev/null +++ b/manifests/sapi.pp @@ -0,0 +1,30 @@ +define php::sapi ( + $extension, + $ensure, + $priority, +) { + case $title { + "fpm${extension}": { + if defined(Service[$php::fpm::params::service_name]) { + $disenable = $title + } + } + "apache2${extension}": { + if defined(Package[$php::apache::params::package]) { + $disenable = $title + } + } + "cli${extension}": { + $disenable = $title + } + default: {} + } + + unless empty($disenable) { + php::extension::disenable { $disenable: + extension => $extension, + ensure => $ensure, + priority => $priority, + } + } +}