diff --git a/manifests/globals.pp b/manifests/globals.pp index 22b9fb3..8a80054 100644 --- a/manifests/globals.pp +++ b/manifests/globals.pp @@ -1,162 +1,170 @@ # 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', }, 'Ubuntu' => $facts['os']['release']['major'] ? { '18.04' => '7.2', '16.04' => '7.0', default => '5.x', }, 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/params.pp b/manifests/params.pp index 8dc3142..6d0da0d 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,221 +1,221 @@ # PHP params class # class php::params inherits php::globals { $ensure = 'present' $fpm_service_enable = true $fpm_service_ensure = 'running' $composer_source = 'https://getcomposer.org/composer.phar' $composer_path = '/usr/local/bin/composer' $composer_max_age = 30 $pear_ensure = 'present' $pear_package_suffix = 'pear' $phpunit_source = 'https://phar.phpunit.de/phpunit.phar' $phpunit_path = '/usr/local/bin/phpunit' $phpunit_max_age = 30 $pool_purge = false case $facts['os']['family'] { 'Debian': { $config_root = $php::globals::globals_config_root $config_root_ini = "${config_root}/mods-available" $config_root_inifile = "${config_root}/php.ini" $common_package_names = [] $common_package_suffixes = ['cli', 'common'] $cli_inifile = "${config_root}/cli/php.ini" $dev_package_suffix = 'dev' $fpm_pid_file = $php::globals::globals_fpm_pid_file $fpm_config_file = "${config_root}/fpm/php-fpm.conf" $fpm_error_log = $php::globals::fpm_error_log $fpm_inifile = "${config_root}/fpm/php.ini" $fpm_package_suffix = 'fpm' $fpm_pool_dir = "${config_root}/fpm/pool.d" $fpm_service_name = $php::globals::fpm_service_name $fpm_user = 'www-data' $fpm_group = 'www-data' $apache_inifile = "${config_root}/apache2/php.ini" $embedded_package_suffix = 'embed' $embedded_inifile = "${config_root}/embed/php.ini" $package_prefix = $php::globals::package_prefix $compiler_packages = 'build-essential' $root_group = 'root' $ext_tool_enable = $php::globals::ext_tool_enable $ext_tool_query = $php::globals::ext_tool_query $ext_tool_enabled = true case $facts['os']['name'] { 'Debian': { $manage_repos = false } 'Ubuntu': { $manage_repos = false } default: { $manage_repos = false } } } 'Suse': { if ($php::globals::php_version != undef) { $php_version_major = regsubst($php::globals::php_version, '^(\d+)\.(\d+)$','\1') } else { $php_version_major = 5 } $config_root = $php::globals::globals_config_root $config_root_ini = "${config_root}/conf.d" $config_root_inifile = "${config_root}/php.ini" $common_package_names = ["php${php_version_major}"] $common_package_suffixes = [] $cli_inifile = "${config_root}/cli/php.ini" $dev_package_suffix = 'devel' $fpm_pid_file = $php::globals::globals_fpm_pid_file $fpm_config_file = "${config_root}/fpm/php-fpm.conf" $fpm_error_log = $php::globals::fpm_error_log $fpm_inifile = "${config_root}/fpm/php.ini" $fpm_package_suffix = 'fpm' $fpm_pool_dir = "${config_root}/fpm/pool.d" $fpm_service_name = 'php-fpm' $fpm_user = 'wwwrun' $fpm_group = 'www' $embedded_package_suffix = 'embed' $embedded_inifile = "${config_root}/embed/php.ini" $package_prefix = $php::globals::package_prefix $manage_repos = true $root_group = 'root' $ext_tool_enable = undef $ext_tool_query = undef $ext_tool_enabled = false case $facts['os']['name'] { 'SLES': { $compiler_packages = [] } 'OpenSuSE': { $compiler_packages = 'devel_basis' } default: { fail("Unsupported operating system ${facts['os']['name']}") } } } 'RedHat': { $config_root = $php::globals::globals_config_root case $php::globals::rhscl_mode { 'remi': { $config_root_ini = "${config_root}/php.d" $config_root_inifile = "${config_root}/php.ini" $cli_inifile = $config_root_inifile $fpm_inifile = $config_root_inifile $fpm_config_file = "${config_root}/php-fpm.conf" $fpm_pool_dir = "${config_root}/php-fpm.d" $php_bin_dir = "${php::globals::rhscl_root}/bin" } 'rhscl': { $config_root_ini = "${config_root}/php.d" $config_root_inifile = "${config_root}/php.ini" $cli_inifile = "${config_root}/php-cli.ini" $fpm_inifile = "${config_root}/php-fpm.ini" $fpm_config_file = "${config_root}/php-fpm.conf" $fpm_pool_dir = "${config_root}/php-fpm.d" $php_bin_dir = "${php::globals::rhscl_root}/bin" } undef: { # no rhscl $config_root_ini = $config_root $config_root_inifile = '/etc/php.ini' $cli_inifile = '/etc/php-cli.ini' $fpm_inifile = '/etc/php-fpm.ini' $fpm_config_file = '/etc/php-fpm.conf' $fpm_pool_dir = '/etc/php-fpm.d' } default: { fail("Unsupported rhscl_mode '${php::globals::rhscl_mode}'") } } $apache_inifile = $config_root_inifile $embedded_inifile = $config_root_inifile $common_package_names = [] $common_package_suffixes = ['cli', 'common'] $dev_package_suffix = 'devel' $fpm_pid_file = $php::globals::globals_fpm_pid_file $fpm_error_log = '/var/log/php-fpm/error.log' $fpm_package_suffix = 'fpm' $fpm_service_name = pick($php::globals::fpm_service_name, 'php-fpm') $fpm_user = 'apache' $fpm_group = 'apache' $embedded_package_suffix = 'embedded' $package_prefix = pick($php::globals::package_prefix, 'php-') $compiler_packages = ['gcc', 'gcc-c++', 'make'] $manage_repos = false $root_group = 'root' $ext_tool_enable = undef $ext_tool_query = undef $ext_tool_enabled = false } 'FreeBSD': { $config_root = $php::globals::globals_config_root $config_root_ini = "${config_root}/php" $config_root_inifile = "${config_root}/php.ini" # No common packages, because the required PHP base package will be # pulled in as a dependency. This preserves the ability to choose # any available PHP version by setting the 'package_prefix' parameter. $common_package_names = [] $common_package_suffixes = ['extensions'] $cli_inifile = "${config_root}/php-cli.ini" $dev_package_suffix = undef $fpm_pid_file = $php::globals::globals_fpm_pid_file $fpm_config_file = "${config_root}/php-fpm.conf" $fpm_error_log = '/var/log/php-fpm.log' $fpm_inifile = "${config_root}/php-fpm.ini" $fpm_package_suffix = undef $fpm_pool_dir = "${config_root}/php-fpm.d" $fpm_service_name = 'php-fpm' $fpm_user = 'www' $fpm_group = 'www' $embedded_package_suffix = 'embed' $embedded_inifile = "${config_root}/php-embed.ini" - $package_prefix = 'php56-' + $package_prefix = $php::globals::package_prefix $compiler_packages = ['gcc'] $manage_repos = false $root_group = 'wheel' $ext_tool_enable = undef $ext_tool_query = undef $ext_tool_enabled = false } 'Archlinux': { $config_root_ini = '/etc/php/conf.d' $config_root_inifile = '/etc/php/php.ini' $common_package_names = [] $common_package_suffixes = [] $cli_inifile = '/etc/php/php.ini' $dev_package_suffix = undef $fpm_pid_file = '/run/php-fpm/php-fpm.pid' $fpm_config_file = '/etc/php/php-fpm.conf' $fpm_error_log = 'syslog' $fpm_inifile = '/etc/php/php.ini' $fpm_package_suffix = 'fpm' $fpm_pool_dir = '/etc/php/php-fpm.d' $fpm_service_name = 'php-fpm' $fpm_user = 'root' $fpm_group = 'root' $apache_inifile = '/etc/php/php.ini' $embedded_package_suffix = 'embedded' $embedded_inifile = '/etc/php/php.ini' $package_prefix = 'php-' $compiler_packages = ['gcc', 'make'] $manage_repos = false $root_group = 'root' $ext_tool_enable = undef $ext_tool_query = undef $ext_tool_enabled = false } default: { fail("Unsupported osfamily: ${facts['os']['family']}") } } } diff --git a/manifests/pear.pp b/manifests/pear.pp index cf51b4b..6c3cd52 100644 --- a/manifests/pear.pp +++ b/manifests/pear.pp @@ -1,70 +1,66 @@ # Install PEAR package manager # # === Parameters # # [*ensure*] # The package ensure of PHP pear to install and run pear auto_discover # # [*package*] # The package name for PHP pear # class php::pear ( String $ensure = $php::pear_ensure, Optional[String] $package = undef, Boolean $manage_repos = $php::manage_repos, ) inherits php::params { assert_private() # Defaults for the pear package name if $package { $package_name = $package } else { if $facts['os']['name'] == 'Amazon' { # On Amazon Linux the package name is also just 'php-pear'. # This would normally not be problematic but if you specify a # package_prefix other than 'php' then it will fail. $package_name = "php-${php::params::pear_package_suffix}" } else { case $facts['os']['family'] { 'Debian': { # Debian is a litte stupid: The pear package is called 'php-pear' # even though others are called 'php5-fpm' or 'php5-dev' $package_name = "php-${php::params::pear_package_suffix}" } - 'FreeBSD': { - # On FreeBSD the package name is just 'pear'. - $package_name = $php::params::pear_package_suffix - } default: { # This is the default for all other architectures $package_name = "${php::package_prefix}${php::params::pear_package_suffix}" } } } } # the apt module provides apt::update. apt is only included if we manage any repos $require = $manage_repos ? { true => Class['::apt::update'], false => 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 { ensure_packages(["${php::package_prefix}xml"], { ensure => present, require => $require, }) package { $package_name: ensure => $ensure, require => [$require,Class['php::cli'],Package["${php::package_prefix}xml"]], } } else { package { $package_name: ensure => $ensure, require => Class['php::cli'], } } }