diff --git a/manifests/extension/apc.pp b/manifests/extension/apc.pp index 90776e6..05510cc 100644 --- a/manifests/extension/apc.pp +++ b/manifests/extension/apc.pp @@ -12,16 +12,41 @@ $version = '3.1.13' ) { require php::config + + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $php == '5' { + $patch_version = $secure_5_6 + } elsif $php == '5.6' { + $patch_version = $secure_5_6 + } elsif $php == '5.5' { + $patch_version = $secure_5_5 + } elsif $php == '5.4' { + $patch_version = $secure_5_4 + } else { + $patch_version = $php + } + # Require php version eg. php::5_4_10 # This will compile, install and set up config dirs if not present - php_require($php) + php_require($patch_version) - $extension = 'apc' - $package_name = "APC-${version}" - $url = "http://pecl.php.net/get/APC-${version}.tgz" + if ($patch_version == '5.4') { + $extension = 'apc' + $package_name = "APC-${version}" + $url = "http://pecl.php.net/get/APC-${version}.tgz" + } else { + $extension = 'apcu' + $package_name = "APCu-${version}" + $url = "http://pecl.php.net/get/apcu-${version}.tgz" + } # Final module install path - $module_path = "${php::config::root}/versions/${php}/modules/${extension}.so" + $module_path = "${php::config::root}/versions/${patch_version}/modules/${extension}.so" php_extension { $name: extension => $extension, @@ -30,14 +55,14 @@ package_url => $url, homebrew_path => $boxen::config::homebrewdir, phpenv_root => $php::config::root, - php_version => $php, + php_version => $patch_version, cache_dir => $php::config::extensioncachedir, } # Add config file once extension is installed - file { "${php::config::configdir}/${php}/conf.d/${extension}.ini": - content => template("php/extensions/${extension}.ini.erb"), + file { "${php::config::configdir}/${patch_version}/conf.d/${extension}.ini": + content => template("php/extensions/apc.ini.erb"), require => Php_extension[$name], } diff --git a/manifests/extension/intl.pp b/manifests/extension/intl.pp index d6e41f2..c0b80c2 100644 --- a/manifests/extension/intl.pp +++ b/manifests/extension/intl.pp @@ -13,6 +13,24 @@ ) { require php::config + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $php == '5' { + $patch_version = $secure_5_6 + } elsif $php == '5.6' { + $patch_version = $secure_5_6 + } elsif $php == '5.5' { + $patch_version = $secure_5_5 + } elsif $php == '5.4' { + $patch_version = $secure_5_4 + } else { + $patch_version = $php + } + # Require php version eg. php::5_4_10 # This will compile, install and set up config dirs if not present php_require($php) @@ -22,7 +40,7 @@ $url = "http://pecl.php.net/get/intl-${version}.tgz" # Final module install path - $module_path = "${php::config::root}/versions/${php}/modules/${extension}.so" + $module_path = "${php::config::root}/versions/${patch_version}/modules/${extension}.so" # Additional options $configure_params = "--with-icu-dir=${boxen::config::homebrewdir}/opt/icu4c" @@ -34,14 +52,14 @@ package_url => $url, homebrew_path => $boxen::config::homebrewdir, phpenv_root => $php::config::root, - php_version => $php, + php_version => $patch_version, cache_dir => $php::config::extensioncachedir, configure_params => $configure_params, } # Add config file once extension is installed - file { "${php::config::configdir}/${php}/conf.d/${extension}.ini": + file { "${php::config::configdir}/${patch_version}/conf.d/${extension}.ini": content => template('php/extensions/generic.ini.erb'), require => Php_extension[$name], } diff --git a/manifests/extension/xdebug.pp b/manifests/extension/xdebug.pp index d9ffe1b..7c26324 100644 --- a/manifests/extension/xdebug.pp +++ b/manifests/extension/xdebug.pp @@ -12,16 +12,35 @@ $version = '2.2.1' ) { require php::config + + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $php == '5' { + $patch_version = $secure_5_6 + } elsif $php == '5.6' { + $patch_version = $secure_5_6 + } elsif $php == '5.5' { + $patch_version = $secure_5_5 + } elsif $php == '5.4' { + $patch_version = $secure_5_4 + } else { + $patch_version = $php + } + # Require php version eg. php::5_4_10 # This will compile, install and set up config dirs if not present - php_require($php) + php_require($patch_version) $extension = 'xdebug' $package_name = "xdebug-${version}" $url = "http://xdebug.org/files/xdebug-${version}.tgz" # Final module install path - $module_path = "${php::config::root}/versions/${php}/modules/${extension}.so" + $module_path = "${php::config::root}/versions/${patch_version}/modules/${extension}.so" php_extension { $name: extension => $extension, @@ -30,13 +49,13 @@ package_url => $url, homebrew_path => $boxen::config::homebrewdir, phpenv_root => $php::config::root, - php_version => $php, + php_version => $patch_version, cache_dir => $php::config::extensioncachedir, } # Add config file once extension is installed - file { "${php::config::configdir}/${php}/conf.d/${extension}.ini": + file { "${php::config::configdir}/${patch_version}/conf.d/${extension}.ini": content => template("php/extensions/${extension}.ini.erb"), require => Php_extension[$name], } diff --git a/manifests/fpm.pp b/manifests/fpm.pp index 6d5ae6d..870cbb1 100644 --- a/manifests/fpm.pp +++ b/manifests/fpm.pp @@ -46,19 +46,19 @@ $bin = "${php::config::root}/versions/${patch_version}/sbin/php-fpm" # Set up FPM config - file { $fpm_config: + ensure_resource('file', $fpm_config, { content => template('php/php-fpm.conf.erb'), notify => Php::Fpm::Service[$patch_version], - } + }) # Set up FPM Pool config directory - file { $fpm_pool_config_dir: + ensure_resource('file', $fpm_pool_config_dir, { ensure => directory, recurse => true, force => true, source => 'puppet:///modules/php/empty-conf-dir', require => File[$version_config_root], - } + }) # Create a default pool, as FPM won't start without one # Listen on a fake socket for now @@ -72,33 +72,28 @@ $min_spare_servers = 1 $max_spare_servers = 1 - file { "${fpm_pool_config_dir}/${patch_version}.conf": + ensure_resource('file', "${fpm_pool_config_dir}/${patch_version}.conf", { content => template('php/php-fpm-pool.conf.erb'), - } + }) # Launch our FPM Service - php::fpm::service{ $patch_version: + ensure_resource('php::fpm::service', $patch_version, { ensure => running, subscribe => File["${fpm_pool_config_dir}/${patch_version}.conf"], - } + }) } else { # Stop service and kill configs # Stop service first as we need to unload the plist file - file { [ - $fpm_config, - $fpm_pool_config_dir, - ]: + ensure_resource('file', [$fpm_config,$fpm_pool_config_dir], { ensure => absent, require => Php::Fpm::Service[$patch_version], - } + }) - php::fpm::service{ $patch_version: - ensure => absent, - } + ensure_resource('php::fpm::service', $patch_version, { ensure => absent }) } } diff --git a/manifests/fpm/pool.pp b/manifests/fpm/pool.pp index 3edb239..0c37f56 100644 --- a/manifests/fpm/pool.pp +++ b/manifests/fpm/pool.pp @@ -23,9 +23,27 @@ ) { require php::config + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $version == '5' { + $patch_version = $secure_5_6 + } elsif $version == '5.6' { + $patch_version = $secure_5_6 + } elsif $version == '5.5' { + $patch_version = $secure_5_5 + } elsif $version == '5.4' { + $patch_version = $secure_5_4 + } else { + $patch_version = $version + } + # Set config - $fpm_pool_config_dir = "${php::config::configdir}/${version}/pool.d" + $fpm_pool_config_dir = "${php::config::configdir}/${patch_version}/pool.d" $pool_name = join(split($name, '[. ]'), '_') # Set up PHP-FPM pool @@ -33,13 +51,13 @@ if $ensure == present { # Ensure that the php fpm service for this php version is installed # eg. php::fpm::5_4_10 - php_fpm_require $version + php_fpm_require $patch_version # Create a pool config file file { "${fpm_pool_config_dir}/${pool_name}.conf": content => template($fpm_pool), require => File[$fpm_pool_config_dir], - notify => Service["dev.php-fpm.${version}"], + notify => Service["dev.php-fpm.${patch_version}"], } } } diff --git a/manifests/global.pp b/manifests/global.pp index 32b9b31..e4c5499 100644 --- a/manifests/global.pp +++ b/manifests/global.pp @@ -7,20 +7,32 @@ class php::global($version = undef) { include php::config - # Default to latest version of PHP 5 if not specified - $php_version = $version ? { - undef => 5, - default => $version + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $version == '5' { + $php_version = $secure_5_6 + } elsif $version == '5.6' { + $php_version = $secure_5_6 + } elsif $version == '5.5' { + $php_version = $secure_5_5 + } elsif $version == '5.4' { + $php_version = $secure_5_4 + } else { + $php_version = $version } if $version != 'system' { - php_require($version) + php_require($php_version) } file { "${php::config::root}/version": ensure => present, owner => $::boxen_user, mode => '0644', - content => "${version}\n", + content => "${php_version}\n", } } diff --git a/manifests/project.pp b/manifests/project.pp index 70d90a0..e5c22c1 100644 --- a/manifests/project.pp +++ b/manifests/project.pp @@ -195,22 +195,41 @@ } if $php { + + # Current supported and secure versions + $secure_5_6 = $php::config::secure_versions['5.6'] + $secure_5_5 = $php::config::secure_versions['5.5'] + $secure_5_4 = $php::config::secure_versions['5.4'] + + # Specify secure version if no minor point specified + if $php == '5' { + $php_version = $secure_5_6 + } elsif $php == '5.6' { + $php_version = $secure_5_6 + } elsif $php == '5.5' { + $php_version = $secure_5_5 + } elsif $php == '5.4' { + $php_version = $secure_5_4 + } else { + $php_version = $php + } + # Set the local version of PHP php::local { $repo_dir: - version => $php, + version => $php_version, require => Repository[$repo_dir], } # Spin up a PHP-FPM pool for this project, listening on an Nginx socket - php::fpm::pool { "${name}-${php}": - version => $php, + php::fpm::pool { "${name}-${php_version}": + version => $php_version, socket_path => "${boxen::config::socketdir}/${name}", require => File["${nginx::config::sitesdir}/${name}.conf"], max_children => 10, } if $fpm_pool { - Php::Fpm::Pool["${name}-${php}"] { + Php::Fpm::Pool["${name}-${php_version}"] { fpm_pool => $fpm_pool } } diff --git a/manifests/version.pp b/manifests/version.pp index 1eff4dc..ff96a73 100644 --- a/manifests/version.pp +++ b/manifests/version.pp @@ -76,46 +76,42 @@ $version_config_root, $version_data_root, ]: - ensure => absent, - force => true + ensure => absent, + force => true } } else { # Data directory - file { $version_data_root: - ensure => directory, - } + ensure_resource('file', $version_data_root, { ensure => directory }) # Set up config directories - file { $version_config_root: - ensure => directory, - } + ensure_resource('file', $version_config_root, { ensure => directory }) - file { $conf_d: + ensure_resource('file', $conf_d, { ensure => directory, purge => true, force => true, require => File[$version_config_root], - } + }) # Ensure module dir is created for extensions AFTER php is installed - file { $module_dir: + ensure_resource('file', $module_dir, { ensure => directory, require => Php_version[$patch_version], - } + }) # Set up config files - file { $php_ini: + ensure_resource('file', $php_ini, { content => template('php/php.ini.erb'), - require => File[$version_config_root] - } + require => File[$version_config_root], + }) # Log files - file { $error_log: + ensure_resource('file', $error_log, { owner => $::boxen_user, mode => '0644', - } + }) # Install PHP! @@ -125,7 +121,7 @@ $configure_params = $test_params[$patch_version] } - php_version { $patch_version: + ensure_resource('php_version', $patch_version, { user => $::boxen_user, user_home => "/Users/${::boxen_user}", phpenv_root => $php::config::root, @@ -146,61 +142,61 @@ ], notify => Exec["phpenv-rehash-post-install-${patch_version}"], configure_params => $configure_params, - } + }) # Fix permissions for php versions installed prior to 0.3.5 of this module - file { $dest: + ensure_resource('file', $dest, { ensure => directory, owner => $::boxen_user, group => 'staff', recurse => true, require => Php_version[$patch_version], - } + }) # Rehash phpenv shims when a new version is installed - exec { "phpenv-rehash-post-install-${patch_version}": + ensure_resource('exec', "phpenv-rehash-post-install-${patch_version}", { command => "/bin/rm -rf ${php::config::root}/shims && PHPENV_ROOT=${php::config::root} ${php::config::root}/bin/phpenv rehash", require => Php_version[$patch_version], refreshonly => true, - } + }) # PEAR cruft # Ensure per version PEAR cache folder is present - file { "${version_data_root}/cache": + ensure_resource('file', "${version_data_root}/cache", { ensure => directory, require => File[$version_data_root], - } + }) # Set cache_dir for PEAR - exec { "pear-${patch_version}-cache_dir": - command => "${dest}/bin/pear config-set cache_dir ${php::config::datadir}/pear", - unless => "${dest}/bin/pear config-get cache_dir | grep -i ${php::config::datadir}/pear", - require => [ + ensure_resource('exec', "pear-${patch_version}-cache_dir", { + 'command' => "${dest}/bin/pear config-set cache_dir ${php::config::datadir}/pear", + 'unless' => "${dest}/bin/pear config-get cache_dir | grep -i ${php::config::datadir}/pear", + 'require' => [ Php_version[$patch_version], File["${php::config::datadir}/pear"], ], - } + }) # Set download_dir for PEAR - exec { "pear-${patch_version}-download_dir": - command => "${dest}/bin/pear config-set download_dir ${php::config::datadir}/pear", - unless => "${dest}/bin/pear config-get download_dir | grep -i ${php::config::datadir}/pear", - require => [ + ensure_resource('exec', "pear-${patch_version}-download_dir", { + 'command' => "${dest}/bin/pear config-set download_dir ${php::config::datadir}/pear", + 'unless' => "${dest}/bin/pear config-get download_dir | grep -i ${php::config::datadir}/pear", + 'require' => [ Php_version[$patch_version], File["${php::config::datadir}/pear"], ], - } + }) # Set temp_dir for PEAR - exec { "pear-${patch_version}-temp_dir": - command => "${dest}/bin/pear config-set temp_dir ${php::config::datadir}/pear", - unless => "${dest}/bin/pear config-get temp_dir | grep -i ${php::config::datadir}/pear", - require => [ + ensure_resource('exec', "pear-${patch_version}-temp_dir", { + 'command' => "${dest}/bin/pear config-set temp_dir ${php::config::datadir}/pear", + 'unless' => "${dest}/bin/pear config-get temp_dir | grep -i ${php::config::datadir}/pear", + 'require' => [ Php_version[$patch_version], File["${php::config::datadir}/pear"], ], - } + }) } }