From 40ddb05ae51b0c59fc5a881e15c4c3a4633bd75f Mon Sep 17 00:00:00 2001 From: Goran Miskovic Date: Sun, 26 Apr 2015 13:52:49 +0200 Subject: [PATCH 1/3] Mix and match various proposals. --- manifests/extension.pp | 11 ++++++++- manifests/extension/disenable.pp | 38 ++++++++++++++++++++++++++++++++ manifests/sapi.pp | 30 +++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 manifests/extension/disenable.pp create mode 100644 manifests/sapi.pp 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, + } + } +} From 3bb01f4cc02406de90a076acc8d0ff5d1f107360 Mon Sep 17 00:00:00 2001 From: Goran Miskovic Date: Fri, 19 Feb 2016 01:37:10 +0100 Subject: [PATCH 2/3] Parameters classes must be included. refs jippi/puppet-php#142 --- manifests/sapi.pp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/manifests/sapi.pp b/manifests/sapi.pp index fac411d0..67661f48 100644 --- a/manifests/sapi.pp +++ b/manifests/sapi.pp @@ -3,6 +3,8 @@ $ensure, $priority, ) { + include php::apache::params + include php::fpm::params case $title { "fpm${extension}": { if defined(Service[$php::fpm::params::service_name]) { From 6ed5368f35020f47fbbab4c8caa59d1ed8b7bbe2 Mon Sep 17 00:00:00 2001 From: Goran Miskovic Date: Fri, 19 Feb 2016 02:30:06 +0100 Subject: [PATCH 3/3] Added doc blox and assert_private. refs jippi/puppet-php#148 --- manifests/extension.pp | 17 ++++++++++++++++ manifests/extension/disenable.pp | 34 ++++++++++++++++++++++++++++++++ manifests/sapi.pp | 33 +++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/manifests/extension.pp b/manifests/extension.pp index f048abb5..7028e8ff 100644 --- a/manifests/extension.pp +++ b/manifests/extension.pp @@ -23,6 +23,15 @@ # [*source*] # The path to the deb package to install # +# [*sapis*] +# An array of PHP SAPIs for which extension should be installed. This +# parameters applies to PECL extensions only. +# @see http://php.net/manual/en/function.php-sapi-name.php +# +# [*priority*] +# Module loading priority. Default is 20. . +# @see http://www.brandonchecketts.com/archives/getting-ubuntu-14-04-php5enmod-to-understand-module-priority +# # === Variables # # [*php_ensure*] @@ -49,6 +58,14 @@ # source => "/path/to/libgearman8_1.1.7-1_amd64.deb"; # } # +# php::extension { 'gearman': +# ensure => "latest", +# package => "gearman", +# provider => "pecl", +# sapis => ['cli', 'fpm'], +# priority_=> 30 +# } +# # === Authors # # Christian "Jippi" Winther diff --git a/manifests/extension/disenable.pp b/manifests/extension/disenable.pp index 22557d90..ce92d4c9 100644 --- a/manifests/extension/disenable.pp +++ b/manifests/extension/disenable.pp @@ -1,9 +1,43 @@ +# == Type: php::extension::disenable +# +# Enables a PHP extension installed using PECL +# +# === Parameters +# +# [*extension*] +# The name of extension to enable or disenable +# +# [*ensure*] +# The ensure of the package to install +# Could be "latest", "installed", pinned version or "absent" +# +# [*priority*] +# Integer indicateing loading order +# +# === Variables +# +# No variables +# +# === Examples +# +# This is a private type and should not be used on its own. +# +# === Author +# +# Goran Miskovic +# +# === Copyright +# +# Copyright 2012-2016 Christian "Jippi" Winther, unless otherwise noted. +# define php::extension::disenable ( $extension, $ensure = 'present', $priority = 20, ) { + assert_private("This is a privete type and should not be used on its own.") + $sapi = delete($title, $extension) Exec { diff --git a/manifests/sapi.pp b/manifests/sapi.pp index 67661f48..1c279fb3 100644 --- a/manifests/sapi.pp +++ b/manifests/sapi.pp @@ -1,8 +1,41 @@ +# == Type: php::sapi +# +# Enables a PHP extension installed using PECL +# +# === Parameters +# +# [*extension*] +# The name of extension to enable or disenable +# +# [*ensure*] +# The ensure of the package to install +# Could be "latest", "installed", pinned version or "absent" +# +# [*priority*] +# Integer indicateing loading order +# +# === Variables +# +# No variables +# +# === Examples +# +# This is a private type and should not be used on its own. +# +# === Author +# +# Goran Miskovic +# +# === Copyright +# +# Copyright 2012-2016 Christian "Jippi" Winther, unless otherwise noted. +# define php::sapi ( $extension, $ensure, $priority, ) { + assert_private("This is a privete type and should not be used on its own.") include php::apache::params include php::fpm::params case $title {