208 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Puppet
		
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Puppet
		
	
	
if $php_values == undef { $php_values = hiera_hash('php', false) }
 | 
						|
if $apache_values == undef { $apache_values = hiera_hash('apache', false) }
 | 
						|
if $nginx_values == undef { $nginx_values = hiera_hash('nginx', false) }
 | 
						|
if $mailcatcher_values == undef { $mailcatcher_values = hiera_hash('mailcatcher', false) }
 | 
						|
 | 
						|
include puphpet::params
 | 
						|
 | 
						|
if hash_key_equals($php_values, 'install', 1) {
 | 
						|
  include php::params
 | 
						|
  include apache::params
 | 
						|
  include nginx::params
 | 
						|
 | 
						|
  class { 'puphpet::php::repos':
 | 
						|
    php_version => $php_values['version']
 | 
						|
  }
 | 
						|
 | 
						|
  Class['Php']
 | 
						|
  -> Class['Php::Devel']
 | 
						|
  -> Php::Module <| |>
 | 
						|
  -> Php::Pear::Module <| |>
 | 
						|
  -> Php::Pecl::Module <| |>
 | 
						|
 | 
						|
  $php_prefix = $::osfamily ? {
 | 
						|
    'debian' => 'php5-',
 | 
						|
    'redhat' => 'php-',
 | 
						|
  }
 | 
						|
 | 
						|
  $php_fpm_ini = $::osfamily ? {
 | 
						|
    'debian' => '/etc/php5/fpm/php.ini',
 | 
						|
    'redhat' => '/etc/php.ini',
 | 
						|
  }
 | 
						|
 | 
						|
  if hash_key_equals($apache_values, 'install', 1)
 | 
						|
    and hash_key_equals($php_values, 'mod_php', 1)
 | 
						|
  {
 | 
						|
    $php_package                  = $php::params::package
 | 
						|
    $php_webserver_service        = 'httpd'
 | 
						|
    $php_webserver_service_ini    = $php_webserver_service
 | 
						|
    $php_webserver_service_ensure = 'running'
 | 
						|
    $php_webserver_restart        = true
 | 
						|
    $php_config_file              = $php::params::config_file
 | 
						|
    $php_manage_service           = false
 | 
						|
  } elsif hash_key_equals($apache_values, 'install', 1)
 | 
						|
    or hash_key_equals($nginx_values, 'install', 1)
 | 
						|
  {
 | 
						|
    $php_package                  = "${php_prefix}fpm"
 | 
						|
    $php_webserver_service        = "${php_prefix}fpm"
 | 
						|
    $php_webserver_service_ini    = $php_webserver_service
 | 
						|
    $php_webserver_service_ensure = 'running'
 | 
						|
    $php_webserver_restart        = true
 | 
						|
    $php_config_file              = $php_fpm_ini
 | 
						|
    $php_manage_service           = true
 | 
						|
 | 
						|
    exec { 'php_fpm-listen':
 | 
						|
      command => "perl -p -i -e 's#listen = .*#listen = 127.0.0.1:9000#gi' ${puphpet::params::php_fpm_conf}",
 | 
						|
      onlyif  => "test -f ${puphpet::params::php_fpm_conf}",
 | 
						|
      unless  => "grep -x 'listen = 127.0.0.1:9000' ${puphpet::params::php_fpm_conf}",
 | 
						|
      path    => [ '/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/' ],
 | 
						|
      require => Package[$php_package],
 | 
						|
      notify  => Service[$php_webserver_service],
 | 
						|
    }
 | 
						|
 | 
						|
    exec { 'php_fpm-security.limit_extensions':
 | 
						|
      command => "perl -p -i -e 's#;security.limit_extensions = .*#security.limit_extensions = .php#gi' ${puphpet::params::php_fpm_conf}",
 | 
						|
      onlyif  => "test -f ${puphpet::params::php_fpm_conf}",
 | 
						|
      unless  => "grep -x 'security.limit_extensions = .php' ${puphpet::params::php_fpm_conf}",
 | 
						|
      path    => [ '/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/' ],
 | 
						|
      require => Package[$php_package],
 | 
						|
      notify  => Service[$php_webserver_service],
 | 
						|
    }
 | 
						|
  } else {
 | 
						|
    $php_package                  = "${php_prefix}cli"
 | 
						|
    $php_webserver_service        = undef
 | 
						|
    $php_webserver_service_ini    = undef
 | 
						|
    $php_webserver_service_ensure = undef
 | 
						|
    $php_webserver_restart        = false
 | 
						|
    $php_config_file              = $php::params::config_file
 | 
						|
    $php_manage_service           = false
 | 
						|
  }
 | 
						|
 | 
						|
  class { 'php':
 | 
						|
    package             => $php_package,
 | 
						|
    service             => $php_webserver_service,
 | 
						|
    service_autorestart => false,
 | 
						|
    config_file         => $php_config_file,
 | 
						|
  }
 | 
						|
 | 
						|
  if $php_manage_service and $php_webserver_service and ! defined(Service[$php_webserver_service]) {
 | 
						|
    service { $php_webserver_service:
 | 
						|
      ensure     => $php_webserver_service_ensure,
 | 
						|
      enable     => true,
 | 
						|
      hasrestart => true,
 | 
						|
      hasstatus  => true,
 | 
						|
      require    => Package[$php_webserver_service]
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  class { 'php::devel': }
 | 
						|
 | 
						|
  if count($php_values['modules']['php']) > 0 {
 | 
						|
    php_mod { $php_values['modules']['php']:; }
 | 
						|
  }
 | 
						|
  if count($php_values['modules']['pear']) > 0 {
 | 
						|
    php_pear_mod { $php_values['modules']['pear']:; }
 | 
						|
  }
 | 
						|
  if count($php_values['modules']['pecl']) > 0 {
 | 
						|
    php_pecl_mod { $php_values['modules']['pecl']:; }
 | 
						|
  }
 | 
						|
 | 
						|
  if count($php_values['ini']) > 0 {
 | 
						|
    $php_inis = merge({
 | 
						|
      'cgi.fix_pathinfo' => 1,
 | 
						|
      'date.timezone'    => $php_values['timezone'],
 | 
						|
    }, $php_values['ini'])
 | 
						|
 | 
						|
    each( $php_inis ) |$key, $value| {
 | 
						|
      if is_array($value) {
 | 
						|
        each( $php_values['ini'][$key] ) |$innerkey, $innervalue| {
 | 
						|
          puphpet::php::ini { "${key}_${innerkey}":
 | 
						|
            entry       => "CUSTOM_${innerkey}/${key}",
 | 
						|
            value       => $innervalue,
 | 
						|
            php_version => $php_values['version'],
 | 
						|
            webserver   => $php_webserver_service_ini
 | 
						|
          }
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        puphpet::php::ini { $key:
 | 
						|
          entry       => "CUSTOM/${key}",
 | 
						|
          value       => $value,
 | 
						|
          php_version => $php_values['version'],
 | 
						|
          webserver   => $php_webserver_service_ini
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    if hash_key_true($php_values['ini'], 'session.save_path'){
 | 
						|
      $php_sess_save_path = $php_values['ini']['session.save_path']
 | 
						|
 | 
						|
      exec {"mkdir -p ${php_sess_save_path}":
 | 
						|
        creates => $php_sess_save_path,
 | 
						|
        before  => Class['php']
 | 
						|
      }
 | 
						|
      -> file { $php_sess_save_path:
 | 
						|
        ensure => directory,
 | 
						|
        group  => 'www-data',
 | 
						|
        owner  => 'www-data',
 | 
						|
        mode   => 0775,
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  if hash_key_equals($php_values, 'composer', 1)
 | 
						|
    and ! defined(Class['puphpet::php::composer'])
 | 
						|
  {
 | 
						|
    class { 'puphpet::php::composer':
 | 
						|
      php_package   => "${php::params::module_prefix}cli",
 | 
						|
      composer_home => $php_values['composer_home'],
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  # Usually this would go within the library that needs in (Mailcatcher)
 | 
						|
  # but the values required are sufficiently complex that it's easier to
 | 
						|
  # add here
 | 
						|
  if hash_key_equals($mailcatcher_values, 'install', 1)
 | 
						|
    and ! defined(Puphpet::Php::Ini['sendmail_path'])
 | 
						|
  {
 | 
						|
    $mailcatcher_f_flag = $mailcatcher_values['settings']['from_email_method'] ? {
 | 
						|
      'headers' => '',
 | 
						|
      default   => ' -f',
 | 
						|
    }
 | 
						|
 | 
						|
    puphpet::php::ini { 'sendmail_path':
 | 
						|
      entry       => 'CUSTOM/sendmail_path',
 | 
						|
      value       => "${mailcatcher_values['settings']['mailcatcher_path']}/catchmail${mailcatcher_f_flag}",
 | 
						|
      php_version => $php_values['version'],
 | 
						|
      webserver   => $php_webserver_service_ini
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
define php_mod {
 | 
						|
  if ! defined(Puphpet::Php::Module[$name]) {
 | 
						|
    puphpet::php::module { $name:
 | 
						|
      service_autorestart => $php_webserver_restart,
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
define php_pear_mod {
 | 
						|
  if ! defined(Puphpet::Php::Pear[$name]) {
 | 
						|
    puphpet::php::pear { $name:
 | 
						|
      service_autorestart => $php_webserver_restart,
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
define php_pecl_mod {
 | 
						|
  if ! defined(Puphpet::Php::Extra_repos[$name]) {
 | 
						|
    puphpet::php::extra_repos { $name:
 | 
						|
      before => Puphpet::Php::Pecl[$name],
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  if ! defined(Puphpet::Php::Pecl[$name]) {
 | 
						|
    puphpet::php::pecl { $name:
 | 
						|
      service_autorestart => $php_webserver_restart,
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |