Skip to content

Commit 40e6d70

Browse files
schkovichvpassapera
authored andcommitted
Mix and match various proposals.
1 parent 8d088d1 commit 40e6d70

3 files changed

Lines changed: 78 additions & 1 deletion

File tree

manifests/extension.pp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@
6262
$package,
6363
$provider = undef,
6464
$pipe = undef,
65-
$source = undef
65+
$source = undef,
66+
$sapis = ['cli', 'fpm', 'apache2'],
67+
$priority = 20,
6668
) {
6769

6870
if $provider == 'pecl' {
@@ -72,6 +74,13 @@
7274
source => $source,
7375
pipe => $pipe;
7476
}
77+
$uniqe_sapis = suffix($sapis, $package)
78+
php::sapi { $uniqe_sapis:
79+
extension => $package,
80+
ensure => $ensure,
81+
priority => $priority,
82+
require => Package[$package],
83+
}
7584
} elsif $provider == 'dpkg' {
7685
package { $package:
7786
ensure => $ensure,

manifests/extension/disenable.pp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
define php::extension::disenable (
2+
$extension,
3+
$ensure = 'present',
4+
$priority = 20,
5+
) {
6+
7+
$sapi = delete($title, $extension)
8+
9+
Exec {
10+
# fact that php5-common does not guarantee that extension is installed
11+
require => Package[$extension],
12+
# default path minus games
13+
path => '/bin:/usr/bin:/usr/local/bin: /sbin:/usr/sbin:/usr/local/sbin',
14+
}
15+
16+
validate_re($ensure, '^(latest|present|installed|absent)$')
17+
# no need for qualified since path is defined
18+
$command = $ensure ? {
19+
'absent' => 'php5dismod',
20+
default => 'php5enmod'
21+
}
22+
# same as above
23+
$unless = $ensure ? {
24+
'absent' => 'test ! -e',
25+
default => 'test -e',
26+
}
27+
# regex is idempotent. no changes will be made if there is a space after semicolon already
28+
exec { "priority_${sapi}_${extension}":
29+
command => "sed -ie 's/^;priority/; priority/g' /etc/php5/mods-available/${extension}.ini",
30+
onlyif => "test -e /etc/php5/mods-available/${extension}.ini",
31+
}
32+
# extension class should be responsible for service notification
33+
exec { "${command} -s ${sapi} ${extension}":
34+
unless => "${unless} /etc/php5/${sapi}/conf.d/${priority}-${extension}.ini",
35+
require => Exec["priority_${sapi}_${extension}"]
36+
}
37+
38+
}

manifests/sapi.pp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
define php::sapi (
2+
$extension,
3+
$ensure,
4+
$priority,
5+
) {
6+
case $title {
7+
"fpm${extension}": {
8+
if defined(Service[$php::fpm::params::service_name]) {
9+
$disenable = $title
10+
}
11+
}
12+
"apache2${extension}": {
13+
if defined(Package[$php::apache::params::package]) {
14+
$disenable = $title
15+
}
16+
}
17+
"cli${extension}": {
18+
$disenable = $title
19+
}
20+
default: {}
21+
}
22+
23+
unless empty($disenable) {
24+
php::extension::disenable { $disenable:
25+
extension => $extension,
26+
ensure => $ensure,
27+
priority => $priority,
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)