diff --git a/manifests/dev.pp b/manifests/dev.pp index c5cca3d..3beb3f8 100644 --- a/manifests/dev.pp +++ b/manifests/dev.pp @@ -1,42 +1,42 @@ # Install the development package with headers for PHP # # === Parameters # # [*ensure*] # The PHP ensure of PHP dev to install # # [*package*] # The package name for the PHP development files # class php::dev ( String $ensure = $php::ensure, String $package = "${php::package_prefix}${php::params::dev_package_suffix}", Boolean $manage_repos = $php::manage_repos, ) inherits php::params { assert_private() # On FreeBSD there is no 'devel' package. $real_package = $facts['os']['family'] ? { 'FreeBSD' => [], default => $package, } if $facts['os']['family'] == 'Debian' { # we can set the dependency only if we manage repos $require = $manage_repos ? { true => Class['::apt::update'], false => undef, } } else { $require = undef } # Default PHP come with xml module and no seperate package for it - if $facts['os']['name'] == 'Ubuntu' and versioncmp($facts['os']['release']['full'], '16.04') >= 0 { + if $facts['os']['name'] == 'Ubuntu' { ensure_packages(["${php::package_prefix}xml"], { ensure => present, require => $require, }) } package { $real_package: ensure => $ensure, require => Class['php::packages'], } } diff --git a/manifests/fpm.pp b/manifests/fpm.pp index a042b8a..4b2790a 100644 --- a/manifests/fpm.pp +++ b/manifests/fpm.pp @@ -1,125 +1,110 @@ # Install and configure mod_php for fpm # # === Parameters # # [*user*] # The user that php-fpm should run as # # [*group*] # The group that php-fpm should run as # # [*service_enable*] # Enable/disable FPM service # # [*service_ensure*] # Ensure FPM service is either 'running' or 'stopped' # # [*service_name*] # This is the name of the php-fpm service. It defaults to reasonable OS # defaults but can be different in case of using php7.0/other OS/custom fpm service # # [*service_provider*] # This is the name of the service provider, in case there is a non # OS default service provider used to start FPM. # Defaults to 'undef', pick system defaults. # # [*pools*] # Hash of php::fpm::pool resources that will be created. Defaults # to a single php::fpm::pool named www with default parameters. # # [*log_owner*] # The php-fpm log owner # # [*log_group*] # The group owning php-fpm logs # # [*package*] # Specify which package to install # # [*ensure*] # Specify which version of the package to install # # [*inifile*] # Path to php.ini for fpm # # [*settings*] # fpm settings hash # # [*global_pool_settings*] # Hash of defaults params php::fpm::pool resources that will be created. # Defaults is empty hash. # # [*pool_purge*] # Whether to purge pool config files not created # by this module # class php::fpm ( String $ensure = $php::ensure, $user = $php::fpm_user, $group = $php::fpm_group, $service_ensure = $php::fpm_service_ensure, $service_enable = $php::fpm_service_enable, $service_name = $php::fpm_service_name, $service_provider = $php::fpm_service_provider, String $package = $php::real_fpm_package, Stdlib::Absolutepath $inifile = $php::fpm_inifile, Hash $settings = $php::real_settings, $global_pool_settings = $php::real_fpm_global_pool_settings, Hash $pools = $php::real_fpm_pools, $log_owner = $php::log_owner, $log_group = $php::log_group, Boolean $pool_purge = $php::pool_purge, ) { if ! defined(Class['php']) { warning('php::fpm is private') } $real_settings = $settings # On FreeBSD fpm is not a separate package, but included in the 'php' package. # Implies that the option SET+=FPM was set when building the port. $real_package = $facts['os']['family'] ? { 'FreeBSD' => [], default => $package, } package { $real_package: ensure => $ensure, require => Class['php::packages'], } class { 'php::fpm::config': user => $user, group => $group, inifile => $inifile, settings => $real_settings, log_owner => $log_owner, log_group => $log_group, pool_purge => $pool_purge, require => Package[$real_package], } contain 'php::fpm::config' contain 'php::fpm::service' Class['php::fpm::config'] ~> Class['php::fpm::service'] $real_global_pool_settings = $global_pool_settings $real_pools = $pools create_resources(::php::fpm::pool, $real_pools, $real_global_pool_settings) - - # Create an override to use a reload signal as trusty and utopic's - # upstart version supports this - if ($facts['os']['name'] == 'Ubuntu' and versioncmp($facts['os']['release']['full'], '14') >= 0 and versioncmp($facts['os']['release']['full'], '16') < 0) { - if ($service_enable) { - $fpm_override = 'reload signal USR2' - } - else { - $fpm_override = "reload signal USR2\nmanual" - } - file { "/etc/init/${php::fpm::service::service_name}.override": - content => $fpm_override, - before => Package[$real_package], - } - } } diff --git a/manifests/fpm/service.pp b/manifests/fpm/service.pp index 5aa7a0f..fe87c87 100644 --- a/manifests/fpm/service.pp +++ b/manifests/fpm/service.pp @@ -1,49 +1,39 @@ # Manage fpm service # # === Parameters # # [*service_name*] # name of the php-fpm service # # [*ensure*] # 'ensure' value for the service # # [*enable*] # Defines if the service is enabled # # [*provider*] # Defines if the service provider to use # class php::fpm::service ( $service_name = $php::fpm::service_name, $ensure = $php::fpm::service_ensure, $enable = $php::fpm::service_enable, $provider = $php::fpm::service_provider, ) { if ! defined(Class['php::fpm']) { warning('php::fpm::service is private') } - $reload = "service ${service_name} reload" - - if ($facts['os']['name'] == 'Ubuntu' - and versioncmp($facts['os']['release']['full'], '12') >= 0 - and versioncmp($facts['os']['release']['full'], '14') < 0) { - # Precise upstart doesn't support reload signals, so use - # regular service restart instead - $restart = undef - } else { - $restart = $reload - } + $restart = "service ${service_name} reload" service { $service_name: ensure => $ensure, enable => $enable, provider => $provider, hasrestart => true, restart => $restart, hasstatus => true, } ::Php::Extension <| |> ~> Service[$service_name] } diff --git a/manifests/globals.pp b/manifests/globals.pp index 17b9457..f3b4670 100644 --- a/manifests/globals.pp +++ b/manifests/globals.pp @@ -1,169 +1,158 @@ # PHP globals class # # === Parameters # # [*php_version*] # The version of php. # # [*config_root*] # The configuration root directory. # # [*fpm_pid_file*] # Path to pid file for fpm # # [*rhscl_mode*] # The mode specifies the specifics in paths for the various RedHat SCL environments so that the module is configured # correctly on their pathnames. # # Valid modes are: 'rhscl', 'remi' # class php::globals ( Optional[Pattern[/^(rh-)?(php)?[57](\.)?[0-9]/]] $php_version = undef, Optional[Stdlib::Absolutepath] $config_root = undef, Optional[Stdlib::Absolutepath] $fpm_pid_file = undef, $rhscl_mode = undef, ) { $default_php_version = $facts['os']['name'] ? { 'Debian' => $facts['os']['release']['major'] ? { '9' => '7.0', - '10' => '7.3', - default => '5.x', + default => '7.3', }, 'Ubuntu' => $facts['os']['release']['major'] ? { - '18.04' => '7.2', '16.04' => '7.0', - default => '5.x', + default => '7.2', }, default => '5.x', } $globals_php_version = pick($php_version, $default_php_version) case $facts['os']['family'] { 'Debian': { if $facts['os']['name'] == 'Ubuntu' { case $globals_php_version { - /^5\.4/: { - $default_config_root = '/etc/php5' - $default_fpm_pid_file = "/var/run/php/php${globals_php_version}-fpm.pid" - $fpm_error_log = '/var/log/php5-fpm.log' - $fpm_service_name = 'php5-fpm' - $ext_tool_enable = '/usr/sbin/php5enmod' - $ext_tool_query = '/usr/sbin/php5query' - $package_prefix = 'php5-' - } /^[57].[0-9]/: { $default_config_root = "/etc/php/${globals_php_version}" $default_fpm_pid_file = "/var/run/php/php${globals_php_version}-fpm.pid" $fpm_error_log = "/var/log/php${globals_php_version}-fpm.log" $fpm_service_name = "php${globals_php_version}-fpm" $ext_tool_enable = "/usr/sbin/phpenmod -v ${globals_php_version}" $ext_tool_query = "/usr/sbin/phpquery -v ${globals_php_version}" $package_prefix = "php${globals_php_version}-" } default: { # Default php installation from Ubuntu official repository use the following paths until 16.04 # For PPA please use the $php_version to override it. $default_config_root = '/etc/php5' $default_fpm_pid_file = '/var/run/php5-fpm.pid' $fpm_error_log = '/var/log/php5-fpm.log' $fpm_service_name = 'php5-fpm' $ext_tool_enable = '/usr/sbin/php5enmod' $ext_tool_query = '/usr/sbin/php5query' $package_prefix = 'php5-' } } } else { case $globals_php_version { /^5\.6/, /^7\.[0-9]/: { $default_config_root = "/etc/php/${globals_php_version}" $default_fpm_pid_file = "/var/run/php/php${globals_php_version}-fpm.pid" $fpm_error_log = "/var/log/php${globals_php_version}-fpm.log" $fpm_service_name = "php${globals_php_version}-fpm" $ext_tool_enable = "/usr/sbin/phpenmod -v ${globals_php_version}" $ext_tool_query = "/usr/sbin/phpquery -v ${globals_php_version}" $package_prefix = "php${globals_php_version}-" } default: { $default_config_root = '/etc/php5' $default_fpm_pid_file = '/var/run/php5-fpm.pid' $fpm_error_log = '/var/log/php5-fpm.log' $fpm_service_name = 'php5-fpm' $ext_tool_enable = '/usr/sbin/php5enmod' $ext_tool_query = '/usr/sbin/php5query' $package_prefix = 'php5-' } } } } 'Suse': { case $globals_php_version { /^7/: { $default_config_root = '/etc/php7' $package_prefix = 'php7-' $default_fpm_pid_file = '/var/run/php7-fpm.pid' $fpm_error_log = '/var/log/php7-fpm.log' } default: { $default_config_root = '/etc/php5' $package_prefix = 'php5-' $default_fpm_pid_file = '/var/run/php5-fpm.pid' $fpm_error_log = '/var/log/php5-fpm.log' } } } 'RedHat': { case $rhscl_mode { 'remi': { $rhscl_root = "/opt/remi/${php_version}/root" $default_config_root = "/etc/opt/remi/${php_version}" $default_fpm_pid_file = '/var/run/php-fpm/php-fpm.pid' $package_prefix = "${php_version}-php-" $fpm_service_name = "${php_version}-php-fpm" } 'rhscl': { $rhscl_root = "/opt/rh/${php_version}/root" $default_config_root = "/etc/opt/rh/${php_version}" # rhscl registers contents by copy in /etc/opt/rh $default_fpm_pid_file = "/var/opt/rh/${php_version}/run/php-fpm/php-fpm.pid" $package_prefix = "${php_version}-php-" $fpm_service_name = "${php_version}-php-fpm" } undef: { $default_config_root = '/etc/php.d' $default_fpm_pid_file = '/var/run/php-fpm/php-fpm.pid' $fpm_service_name = undef $package_prefix = undef } default: { fail("Unsupported rhscl_mode '${rhscl_mode}'") } } } 'FreeBSD': { case $globals_php_version { /^(\d)\.(\d)$/: { $package_prefix = "php${1}${2}-" } default: { $package_prefix = 'php56-' } } $default_config_root = '/usr/local/etc' $default_fpm_pid_file = '/var/run/php-fpm.pid' $fpm_service_name = undef } 'Archlinux': { $default_config_root = '/etc/php' $default_fpm_pid_file = '/run/php-fpm/php-fpm.pid' } default: { fail("Unsupported osfamily: ${facts['os']['family']}") } } $globals_config_root = pick($config_root, $default_config_root) $globals_fpm_pid_file = pick($fpm_pid_file, $default_fpm_pid_file) } diff --git a/manifests/repo/debian.pp b/manifests/repo/debian.pp index 1bf4aeb..5dd4d50 100644 --- a/manifests/repo/debian.pp +++ b/manifests/repo/debian.pp @@ -1,83 +1,67 @@ # Configure debian apt repo # # === Parameters # # [*location*] # Location of the apt repository # # [*release*] # Release of the apt repository # # [*repos*] # Apt repository names # # [*include_src*] # Add source source repository # # [*key*] # Public key in apt::key format # # [*dotdeb*] # Enable special dotdeb handling # # [*sury*] # Enable special sury handling # class php::repo::debian ( $location = 'https://packages.dotdeb.org', $release = 'wheezy-php56', $repos = 'all', $include_src = false, $key = { 'id' => '6572BBEF1B5FF28B28B706837E3F070089DF5277', 'source' => 'http://www.dotdeb.org/dotdeb.gpg', }, $dotdeb = true, $sury = true, ) { assert_private() include 'apt' apt::source { "source_php_${release}": location => $location, release => $release, repos => $repos, include => { 'src' => $include_src, 'deb' => true, }, key => $key, } - if ($dotdeb) { - # both repositories are required to work correctly - # See: http://www.dotdeb.org/instructions/ - if $release == 'wheezy-php56' { - apt::source { 'dotdeb-wheezy': - location => $location, - release => 'wheezy', - repos => $repos, - include => { - 'src' => $include_src, - 'deb' => true, - }, - } - } - } - - if ($sury and $php::globals::php_version in ['5.6','7.1','7.2']) { + if ($sury and $php::globals::php_version in ['7.1','7.2']) { apt::source { 'source_php_sury': location => 'https://packages.sury.org/php/', repos => 'main', include => { 'src' => $include_src, 'deb' => true, }, key => { id => '15058500A0235D97F5D10063B188E2B695BD4743', source => 'https://packages.sury.org/php/apt.gpg', }, } } } diff --git a/metadata.json b/metadata.json index 22f409c..ac49eac 100644 --- a/metadata.json +++ b/metadata.json @@ -1,88 +1,87 @@ { "name": "puppet-php", "version": "7.1.1-rc0", "author": "Vox Pupuli", "summary": "Generic PHP module that supports many platforms", "license": "MIT", "source": "https://github.com/voxpupuli/puppet-php", "project_page": "https://github.com/voxpupuli/puppet-php", "issues_url": "https://github.com/voxpupuli/puppet-php/issues", "description": "Puppet module that aims to manage PHP and extensions in a generic way on many platforms with sane defaults and easy configuration", "dependencies": [ { "name": "puppetlabs/stdlib", "version_requirement": ">= 4.16.0 < 7.0.0" }, { "name": "puppetlabs/apt", "version_requirement": ">= 4.4.0 < 8.0.0" }, { "name": "puppetlabs/inifile", "version_requirement": ">= 1.4.1 < 5.0.0" }, { "name": "puppet/zypprepo", "version_requirement": ">= 2.0.0 < 3.0.0" }, { "name": "puppet/archive", "version_requirement": ">= 1.0.0 < 5.0.0" } ], "requirements": [ { "name": "puppet", "version_requirement": ">= 5.5.8 < 7.0.0" } ], "operatingsystem_support": [ { "operatingsystem": "Ubuntu", "operatingsystemrelease": [ "16.04", "18.04" ] }, { "operatingsystem": "Debian", "operatingsystemrelease": [ - "8", "9", "10" ] }, { "operatingsystem": "RedHat", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "CentOS", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "FreeBSD", "operatingsystemrelease": [ "11" ] }, { "operatingsystem": "SLES", "operatingsystemrelease": [ "11" ] }, { "operatingsystem": "OpenSUSE" }, { "operatingsystem": "Archlinux" } ] }