phpservermon/puphpet/puppet/modules/php/manifests/init.pp

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 %>'),
}
}
}