299 lines
9.7 KiB
Puppet
299 lines
9.7 KiB
Puppet
# = Class: php
|
|
#
|
|
# This is the main php class
|
|
#
|
|
#
|
|
# == Parameters
|
|
#
|
|
# Module specific parameters
|
|
# [*package_devel*]
|
|
# Name of the php-devel package
|
|
#
|
|
# [*package_pear*]
|
|
# Name of the php-pear package
|
|
#
|
|
# Standard class parameters
|
|
# Define the general class behaviour and customizations
|
|
#
|
|
# [*my_class*]
|
|
# Name of a custom class to autoload to manage module's customizations
|
|
# If defined, php class will automatically "include $my_class"
|
|
# Can be defined also by the (top scope) variable $php_myclass
|
|
#
|
|
# [*service*]
|
|
# The service that runs the php interpreter. Defines what service gets
|
|
# notified. Default: apache2|httpd.
|
|
#
|
|
# [*source*]
|
|
# Sets the content of source parameter for main configuration file
|
|
# If defined, php main config file will have the param: source => $source
|
|
# Can be defined also by the (top scope) variable $php_source
|
|
#
|
|
# [*source_dir*]
|
|
# If defined, the whole php configuration directory content is retrieved
|
|
# recursively from the specified source
|
|
# (source => $source_dir , recurse => true)
|
|
# Can be defined also by the (top scope) variable $php_source_dir
|
|
#
|
|
# [*source_dir_purge*]
|
|
# If set to true (default false) the existing configuration directory is
|
|
# mirrored with the content retrieved from source_dir
|
|
# (source => $source_dir , recurse => true , purge => true, force => true)
|
|
# Can be defined also by the (top scope) variable $php_source_dir_purge
|
|
#
|
|
# [*template*]
|
|
# Sets the path to the template to use as content for main configuration file
|
|
# If defined, php main config file has: content => content("$template")
|
|
# Note source and template parameters are mutually exclusive: don't use both
|
|
# Can be defined also by the (top scope) variable $php_template
|
|
#
|
|
# [*augeas*]
|
|
# If set to true (default false), the php.ini will be managed through
|
|
# augeas. This will make php::pecl automatically add extensions to the
|
|
# php.ini.
|
|
# Can be defined also by the (top scope) variable $php_augeas
|
|
#
|
|
# [*options*]
|
|
# An hash of custom options to be used in templates for arbitrary settings.
|
|
# Can be defined also by the (top scope) variable $php_options
|
|
#
|
|
# [*version*]
|
|
# The package version, used in the ensure parameter of package type.
|
|
# Default: present. Can be 'latest' or a specific version number.
|
|
# Note that if the argument absent (see below) is set to true, the
|
|
# package is removed, whatever the value of version parameter.
|
|
#
|
|
# [*absent*]
|
|
# Set to 'true' to remove package(s) installed by module
|
|
# Can be defined also by the (top scope) variable $php_absent
|
|
#
|
|
# [*puppi*]
|
|
# Set to 'true' to enable creation of module data files that are used by puppi
|
|
# Can be defined also by the (top scope) variables $php_puppi and $puppi
|
|
#
|
|
# [*puppi_helper*]
|
|
# Specify the helper to use for puppi commands. The default for this module
|
|
# is specified in params.pp and is generally a good choice.
|
|
# You can customize the output of puppi commands for this module using another
|
|
# puppi helper. Use the define puppi::helper to create a new custom helper
|
|
# Can be defined also by the (top scope) variables $php_puppi_helper
|
|
# and $puppi_helper
|
|
#
|
|
# [*debug*]
|
|
# Set to 'true' to enable modules debugging
|
|
# Can be defined also by the (top scope) variables $php_debug and $debug
|
|
#
|
|
# [*audit_only*]
|
|
# Set to 'true' if you don't intend to override existing configuration files
|
|
# and want to audit the difference between existing files and the ones
|
|
# managed by Puppet.
|
|
# Can be defined also by the (top scope) variables $php_audit_only
|
|
# and $audit_only
|
|
#
|
|
# Default class params - As defined in php::params.
|
|
# Note that these variables are mostly defined and used in the module itself,
|
|
# overriding the default values might not affected all the involved components.
|
|
# Set and override them only if you know what you're doing.
|
|
# Note also that you can't override/set them via top scope variables.
|
|
#
|
|
# [*package*]
|
|
# The name of php package
|
|
#
|
|
# [*config_dir*]
|
|
# Main configuration directory. Used by puppi
|
|
#
|
|
# [*config_file*]
|
|
# Main configuration file path
|
|
#
|
|
# [*config_file_mode*]
|
|
# Main configuration file path mode
|
|
#
|
|
# [*config_file_owner*]
|
|
# Main configuration file path owner
|
|
#
|
|
# [*config_file_group*]
|
|
# Main configuration file path group
|
|
#
|
|
# [*config_file_init*]
|
|
# Path of configuration file sourced by init script
|
|
#
|
|
# [*pid_file*]
|
|
# Path of pid file. Used by monitor
|
|
#
|
|
# [*data_dir*]
|
|
# Path of application data directory. Used by puppi
|
|
#
|
|
# [*log_dir*]
|
|
# Base logs directory. Used by puppi
|
|
#
|
|
# [*log_file*]
|
|
# Log file(s). Used by puppi
|
|
#
|
|
# == Examples
|
|
#
|
|
# You can use this class in 2 ways:
|
|
# - Set variables (at top scope level on in a ENC) and "include php"
|
|
# - Call php as a parametrized class
|
|
#
|
|
# See README for details.
|
|
#
|
|
#
|
|
class php (
|
|
$package_devel = params_lookup( 'package_devel' ),
|
|
$package_pear = params_lookup( 'package_pear' ),
|
|
$my_class = params_lookup( 'my_class' ),
|
|
$service = params_lookup( 'service' ),
|
|
$service_autorestart = params_lookup( 'service_autorestart' ),
|
|
$source = params_lookup( 'source' ),
|
|
$source_dir = params_lookup( 'source_dir' ),
|
|
$source_dir_purge = params_lookup( 'source_dir_purge' ),
|
|
$template = params_lookup( 'template' ),
|
|
$augeas = params_lookup( 'augeas' ),
|
|
$options = params_lookup( 'options' ),
|
|
$version = params_lookup( 'version' ),
|
|
$absent = params_lookup( 'absent' ),
|
|
$monitor = params_lookup( 'monitor' , 'global' ),
|
|
$monitor_tool = params_lookup( 'monitor_tool' , 'global' ),
|
|
$monitor_target = params_lookup( 'monitor_target' , 'global' ),
|
|
$puppi = params_lookup( 'puppi' , 'global' ),
|
|
$puppi_helper = params_lookup( 'puppi_helper' , 'global' ),
|
|
$debug = params_lookup( 'debug' , 'global' ),
|
|
$audit_only = params_lookup( 'audit_only' , 'global' ),
|
|
$package = params_lookup( 'package' ),
|
|
$module_prefix = params_lookup( 'module_prefix' ),
|
|
$config_dir = params_lookup( 'config_dir' ),
|
|
$config_file = params_lookup( 'config_file' ),
|
|
$config_file_mode = params_lookup( 'config_file_mode' ),
|
|
$config_file_owner = params_lookup( 'config_file_owner' ),
|
|
$config_file_group = params_lookup( 'config_file_group' ),
|
|
$config_file_init = params_lookup( 'config_file_init' ),
|
|
$pid_file = params_lookup( 'pid_file' ),
|
|
$data_dir = params_lookup( 'data_dir' ),
|
|
$log_dir = params_lookup( 'log_dir' ),
|
|
$log_file = params_lookup( 'log_file' ),
|
|
$port = params_lookup( 'port' ),
|
|
$protocol = params_lookup( 'protocol' )
|
|
) inherits php::params {
|
|
|
|
$bool_service_autorestart=any2bool($service_autorestart)
|
|
$bool_source_dir_purge=any2bool($source_dir_purge)
|
|
$bool_augeas=any2bool($augeas)
|
|
$bool_absent=any2bool($absent)
|
|
$bool_monitor=any2bool($monitor)
|
|
$bool_puppi=any2bool($puppi)
|
|
$bool_debug=any2bool($debug)
|
|
$bool_audit_only=any2bool($audit_only)
|
|
|
|
### Definition of some variables used in the module
|
|
$manage_package = $php::bool_absent ? {
|
|
true => 'absent',
|
|
false => $php::version,
|
|
}
|
|
|
|
$manage_file = $php::bool_absent ? {
|
|
true => 'absent',
|
|
default => 'present',
|
|
}
|
|
|
|
if $php::bool_absent == true {
|
|
$manage_monitor = false
|
|
} else {
|
|
$manage_monitor = true
|
|
}
|
|
|
|
$manage_audit = $php::bool_audit_only ? {
|
|
true => 'all',
|
|
false => undef,
|
|
}
|
|
|
|
$manage_file_replace = $php::bool_audit_only ? {
|
|
true => false,
|
|
false => true,
|
|
}
|
|
|
|
if ($php::source and $php::template) {
|
|
fail ('PHP: cannot set both source and template')
|
|
}
|
|
if ($php::source and $php::bool_augeas) {
|
|
fail ('PHP: cannot set both source and augeas')
|
|
}
|
|
if ($php::template and $php::bool_augeas) {
|
|
fail ('PHP: cannot set both template and augeas')
|
|
}
|
|
|
|
$manage_file_source = $php::source ? {
|
|
'' => undef,
|
|
default => $php::source,
|
|
}
|
|
|
|
$manage_file_content = $php::template ? {
|
|
'' => undef,
|
|
default => template($php::template),
|
|
}
|
|
|
|
### Managed resources
|
|
package { 'php':
|
|
ensure => $php::manage_package,
|
|
name => $php::package,
|
|
}
|
|
|
|
file { 'php.conf':
|
|
ensure => $php::manage_file,
|
|
path => $php::config_file,
|
|
mode => $php::config_file_mode,
|
|
owner => $php::config_file_owner,
|
|
group => $php::config_file_group,
|
|
require => Package['php'],
|
|
source => $php::manage_file_source,
|
|
content => $php::manage_file_content,
|
|
replace => $php::manage_file_replace,
|
|
audit => $php::manage_audit,
|
|
}
|
|
|
|
# The whole php configuration directory can be recursively overriden
|
|
if $php::source_dir {
|
|
file { 'php.dir':
|
|
ensure => directory,
|
|
path => $php::config_dir,
|
|
require => Package['php'],
|
|
source => $php::source_dir,
|
|
recurse => true,
|
|
purge => $php::bool_source_dir_purge,
|
|
force => $php::bool_source_dir_purge,
|
|
replace => $php::manage_file_replace,
|
|
audit => $php::manage_audit,
|
|
}
|
|
}
|
|
|
|
|
|
### Include custom class if $my_class is set
|
|
if $php::my_class {
|
|
include $php::my_class
|
|
}
|
|
|
|
|
|
### Provide puppi data, if enabled ( puppi => true )
|
|
if $php::bool_puppi == true {
|
|
$classvars=get_class_args()
|
|
puppi::ze { 'php':
|
|
ensure => $php::manage_file,
|
|
variables => $classvars,
|
|
helper => $php::puppi_helper,
|
|
}
|
|
}
|
|
|
|
|
|
### Debugging, if enabled ( debug => true )
|
|
if $php::bool_debug == true {
|
|
file { 'debug_php':
|
|
ensure => $php::manage_file,
|
|
path => "${settings::vardir}/debug-php",
|
|
mode => '0640',
|
|
owner => 'root',
|
|
group => 'root',
|
|
content => inline_template('<%= scope.to_hash.reject { |k,v| k.to_s =~ /(uptime.*|path|timestamp|free|.*password.*|.*psk.*|.*key)/ }.to_yaml %>'),
|
|
}
|
|
}
|
|
|
|
}
|