-
-
Notifications
You must be signed in to change notification settings - Fork 267
Description
Affected Puppet, Ruby, OS and module versions/distributions
- Puppet: 5.2.0
- Ruby: ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
- Distribution: Debian 9 (Stretch)
- Module version: master branch.
How to reproduce (e.g Puppet code you use)
Call inside our module init.pp:
class { '::php::globals':
php_version => $version,
config_root => "/etc/php/$version",
} ->
class { '::php':
ensure => "${version}*",
manage_repos => $manage_repos,
fpm => $fpm,
fpm_service_name => $fpm_service_name,
dev => $dev,
composer => $composer,
pear => $pear,
phpunit => $phpunit,
settings => $merged_settings,
package_prefix => $package_prefix,
extensions => $extensions,
ext_tool_enable => $ext_tool_enable,
ext_tool_query => $ext_tool_query
}
Our module params inherited:
# General params for php
$version = '5.6'
$settings = {
'Date/date.timezone' => 'utc',
'PHP/display_errors' => 'Off',
'PHP/log_errors' => 'On',
'PHP/error_log' => "/var/log/php/${version}-phpini.error.log",
'PHP/memory_limit' => '256M',
'PHP/cgi.fix_pathinfo' => 0,
'opcache/opcache.enable' => 1,
'opcache/opcache.memory_consumption' => '256',
'opcache/opcache.interned_strings_buffer' => '32',
'opcache/opcache.max_accelerated_files' => '10000',
'opcache/opcache.use_cwd' => 1,
'opcache/opcache.validate_timestamps' => 0,
'opcache/opcache.fast_shutdown' => 1,
'opcache/opcache.error_log' => "/var/log/php/${version}/opcache.error.log",
'opcache/opcache.log_verbosity_level' => '2',
'PHP/realpath_cache_size' => '1024k',
'PHP/realpath_cache_ttl' => '300'
}
$fpm = true
$fpm_service_name = "php${version}-fpm"
$manage_repos = false
$dev = true
$composer = false
$pear = false
$phpunit = false
$logdir = '/var/log/php'
$package_prefix = "php${version}-"
$user = 'phpuser'
$userid = undef
$group = 'phpgroup'
$groupid = undef
$listen = '127.0.0.1:9000'
$memory_limit = '128M'
$extensions = {
curl => {
provider => 'apt',
package_prefix => "php${version}-",
},
gd => {
provider => 'apt',
package_prefix => "php${version}-",
},
imagick => {
provider => 'apt',
package_prefix => "php${version}-",
},
mcrypt => {
provider => 'apt',
package_prefix => "php${version}-",
},
mysql => {
provider => 'apt',
package_prefix => "php${version}-",
},
redis => {
provider => 'apt',
package_prefix => "php${version}-",
}
}
$ext_tool_enable = "/usr/sbin/phpenmod -v ${version}"
$ext_tool_query = "/usr/sbin/phpquery -v ${version}"
$pm = 'dynamic'
$pm_max_children = '5'
$pm_start_servers = '2'
$pm_min_spare_servers = '1'
$pm_max_spare_servers = '3'
$pm_max_requests = '0'
$pm_process_idle_timeout = '10s'
$pm_status_path = '/fpm-status'
$php_value = {}
$php_flag = {}
$php_admin_value = {}
$php_admin_flag = {}
$php_directives = []
What are you seeing
In every run puppet tries to enable the module again when it was already installed and enabled by puppet.
What behaviour did you expect instead
A clean run, as the modules were already installed by puppet, already enabled and checking through phpinfo() I see all modules are working ok in fpm.
Output log
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm curl]
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm gd]
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm imagick]
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm mcrypt]
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm mysql]
Info: /Stage[main]/Php::Fpm/Package[php5.6-fpm]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm redis]
Notice: /Stage[main]/Php/Php::Extension[imagick]/Php::Extension::Install[imagick]/Package[php5.6-imagick]/ensure: created
Info: Php::Extension::Install[imagick]: Scheduling refresh of Php::Extension::Config[imagick]
Info: Php::Extension::Config[imagick]: Scheduling refresh of Php::Config[imagick]
Info: Php::Extension::Config[imagick]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm imagick]
Info: Php::Config[imagick]: Scheduling refresh of Php::Config::Setting[/etc/php/5.6/mods-available/imagick.ini: extension]
Notice: /Stage[main]/Php/Php::Extension[redis]/Php::Extension::Install[redis]/Package[php5.6-redis]/ensure: created
Info: Php::Extension::Install[redis]: Scheduling refresh of Php::Extension::Config[redis]
Info: Php::Extension::Config[redis]: Scheduling refresh of Php::Config[redis]
Info: Php::Extension::Config[redis]: Scheduling refresh of Exec[/usr/sbin/phpenmod -v 5.6 -s fpm redis]
Info: Php::Config[redis]: Scheduling refresh of Php::Config::Setting[/etc/php/5.6/mods-available/redis.ini: extension]
Info: Php::Config::Setting[/etc/php/5.6/mods-available/imagick.ini: extension]: Scheduling refresh of Ini_setting[/etc/php/5.6/mods-available/imagick.ini: extension]
Info: Php::Config::Setting[/etc/php/5.6/mods-available/redis.ini: extension]: Scheduling refresh of Ini_setting[/etc/php/5.6/mods-available/redis.ini: extension]
Notice: /Stage[main]/Php/Php::Extension[curl]/Php::Extension::Config[curl]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm curl]: Triggered 'refresh' from 1 event
Info: Php::Extension[curl]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php/Php::Extension[gd]/Php::Extension::Config[gd]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm gd]: Triggered 'refresh' from 1 event
Info: Php::Extension[gd]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php/Php::Extension[imagick]/Php::Extension::Config[imagick]/Php::Config[imagick]/Php::Config::Setting[/etc/php/5.6/mods-available/imagick.ini: extension]/Ini_setting[/etc/php/5.6/mods-available/imagick.ini: extension]: Triggered 'refresh' from 1 event
Notice: /Stage[main]/Php/Php::Extension[imagick]/Php::Extension::Config[imagick]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm imagick]: Triggered 'refresh' from 2 events
Info: Php::Extension[imagick]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php/Php::Extension[mcrypt]/Php::Extension::Config[mcrypt]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm mcrypt]: Triggered 'refresh' from 1 event
Info: Php::Extension[mcrypt]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php/Php::Extension[mysql]/Php::Extension::Config[mysql]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm mysql]: Triggered 'refresh' from 1 event
Info: Php::Extension[mysql]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php/Php::Extension[redis]/Php::Extension::Config[redis]/Php::Config[redis]/Php::Config::Setting[/etc/php/5.6/mods-available/redis.ini: extension]/Ini_setting[/etc/php/5.6/mods-available/redis.ini: extension]: Triggered 'refresh' from 1 event
Notice: /Stage[main]/Php/Php::Extension[redis]/Php::Extension::Config[redis]/Exec[/usr/sbin/phpenmod -v 5.6 -s fpm redis]: Triggered 'refresh' from 2 events
Info: Php::Extension[redis]: Scheduling refresh of Service[php5.6-fpm]
Notice: /Stage[main]/Php::Fpm::Service/Service[php5.6-fpm]: Triggered 'refresh' from 6 events
Any additional information you'd like to impart
I saw there is an ifonly in the exec that enable modules:
onlyif => "${ext_tool_query} -s ${_sapi} -m ${so_name} | /bin/grep 'No module matches ${so_name}'",
And if I place a notify attached to the exec to output the precise command that was run and then execute it myself it works as expected:
root@testing:~# phpquery -v 5.6 -s cli -m redis
redis (Enabled for cli by maintainer script)
Even with the grep the exit status code seems right:
root@testing:~# phpquery -v 5.6 -s cli -m redis |grep 'No module matches redis'
root@testing:~# echo $?
1
However, puppet keeps trying to enable the module even when phpquery says it's enabled.
I'm willing to help if someone points me to where to continue debugging, it's really annoying to have to restart fpm in every puppet run.
Thank you all!