254 lines
8.0 KiB
Puppet
254 lines
8.0 KiB
Puppet
![]() |
# Class: solr
|
||
|
#
|
||
|
# This is the main solr class
|
||
|
#
|
||
|
#
|
||
|
# == Parameters
|
||
|
#
|
||
|
# Standard class parameters - Define solr web app specific settings
|
||
|
#
|
||
|
# [*install*]
|
||
|
# Kind of installation to attempt:
|
||
|
# - package : Installs solr using the OS common packages
|
||
|
# - source : Installs solr downloading and extracting a specific tarball or zip file
|
||
|
# - puppi : Installs solr tarball or file via Puppi, creating the "puppi deploy solr" command
|
||
|
#
|
||
|
# [*install_source*]
|
||
|
# The URL from where to retrieve the source tarball/zip. Used if install => "source" or "puppi"
|
||
|
# Default is from upstream developer site. Update the version when needed.
|
||
|
#
|
||
|
# [*install_destination*]
|
||
|
# The base path where to extract the source tarball/zip. Used if install => "source" or "puppi"
|
||
|
# By default is the distro's default DocumentRoot for Web or Application server
|
||
|
#
|
||
|
# [*install_precommand*]
|
||
|
# A custom command to execute before installing the source tarball/zip. Used if install => "source" or "puppi"
|
||
|
# Check solr/manifests/params.pp before overriding the default settings
|
||
|
#
|
||
|
# [*install_postcommand*]
|
||
|
# A custom command to execute after installing the source tarball/zip. Used if install => "source" or "puppi"
|
||
|
# Check solr/manifests/params.pp before overriding the default settings
|
||
|
#
|
||
|
# [*url_check*]
|
||
|
# An url, relevant to the solr application, to use for testing the correct deployment of solr.
|
||
|
# Used is monitor is enabled.
|
||
|
#
|
||
|
# [*url_pattern*]
|
||
|
# A string that must exist in the defined url_check that confirms that the application is running correctly
|
||
|
#
|
||
|
#
|
||
|
# 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, solr class will automatically "include $my_class"
|
||
|
#
|
||
|
# [*source*]
|
||
|
# Sets the content of source parameter for main configuration file
|
||
|
# If defined, solr main config file will have the parameter: source => $source
|
||
|
#
|
||
|
# [*source_dir*]
|
||
|
# If defined, the whole solr configuration directory content is retrieved recursively from
|
||
|
# the specified source (parameter: source => $source_dir , recurse => true)
|
||
|
#
|
||
|
# [*source_dir_purge*]
|
||
|
# If set to true all the existing configuration directory is overriden by the
|
||
|
# content retrived from source_dir. (source => $source_dir , recurse => true , purge => true)
|
||
|
#
|
||
|
# [*template*]
|
||
|
# Sets the path to the template to be used as content for main configuration file
|
||
|
# If defined, solr main config file will have: content => content("$template")
|
||
|
# Note source and template parameters are mutually exclusive: don't use both
|
||
|
#
|
||
|
# [*options*]
|
||
|
# An hash of custom options that can be used in templates for arbitrary settings.
|
||
|
#
|
||
|
# [*absent*]
|
||
|
# Set to 'true' to remove package(s) installed by module
|
||
|
#
|
||
|
# [*monitor*]
|
||
|
# Set to 'true' to enable monitoring of the services provided by the module
|
||
|
#
|
||
|
# [*monitor_tool*]
|
||
|
# Define which monitor tools (ad defined in Example42 monitor module) you want to use for solr
|
||
|
#
|
||
|
# [*puppi*]
|
||
|
# Set to 'true' to enable creation of module data files that are used by puppi
|
||
|
#
|
||
|
# [*debug*]
|
||
|
# Set to 'true' to enable modules debugging
|
||
|
#
|
||
|
#
|
||
|
# Default class params - As defined in solr::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 (ie: packages layout)
|
||
|
# Set and override them only if you know what you're doing.
|
||
|
#
|
||
|
# [*package*]
|
||
|
# The name of solr 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
|
||
|
#
|
||
|
# [*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
|
||
|
#
|
||
|
# See README
|
||
|
#
|
||
|
#
|
||
|
# == Author
|
||
|
# Alessandro Franceschi <al@lab42.it/>
|
||
|
#
|
||
|
class solr (
|
||
|
$install = params_lookup( 'install' ),
|
||
|
$install_source = params_lookup( 'install_source' ),
|
||
|
$install_destination = params_lookup( 'install_destination' ),
|
||
|
$install_precommand = params_lookup( 'install_precommand' ),
|
||
|
$install_postcommand = params_lookup( 'install_postcommand' ),
|
||
|
$url_check = params_lookup( 'url_check' ),
|
||
|
$url_pattern = params_lookup( 'url_pattern' ),
|
||
|
$my_class = params_lookup( 'my_class' ),
|
||
|
$source = params_lookup( 'source' ),
|
||
|
$source_dir = params_lookup( 'source_dir' ),
|
||
|
$source_dir_purge = params_lookup( 'source_dir_purge' ),
|
||
|
$template = params_lookup( 'template' ),
|
||
|
$options = params_lookup( 'options' ),
|
||
|
$absent = params_lookup( 'absent' ),
|
||
|
$monitor = params_lookup( 'monitor' ),
|
||
|
$monitor_tool = params_lookup( 'monitor_tool' ),
|
||
|
$puppi = params_lookup( 'puppi' ),
|
||
|
$debug = params_lookup( 'debug' ),
|
||
|
$package = params_lookup( 'package' ),
|
||
|
$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' ),
|
||
|
$data_dir = params_lookup( 'data_dir' ),
|
||
|
$log_dir = params_lookup( 'log_dir' ),
|
||
|
$log_file = params_lookup( 'log_file' ),
|
||
|
) inherits solr::params {
|
||
|
|
||
|
validate_bool($source_dir_purge, $absent , $monitor , $puppi , $debug)
|
||
|
|
||
|
# Calculations of some variables used in the module
|
||
|
$manage_package = $solr::absent ? {
|
||
|
true => 'absent',
|
||
|
false => 'present',
|
||
|
}
|
||
|
|
||
|
$manage_file = $solr::absent ? {
|
||
|
true => 'absent',
|
||
|
default => 'present',
|
||
|
}
|
||
|
|
||
|
$manage_monitor = $solr::absent ? {
|
||
|
true => false ,
|
||
|
default => $solr::disable ? {
|
||
|
true => false,
|
||
|
default => true,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
# Installation is managed in dedicated class
|
||
|
require solr::install
|
||
|
|
||
|
file { 'solr.conf':
|
||
|
ensure => $solr::manage_file,
|
||
|
path => $solr::config_file,
|
||
|
mode => $solr::config_file_mode,
|
||
|
owner => $solr::config_file_owner,
|
||
|
group => $solr::config_file_group,
|
||
|
require => Class['solr::install'],
|
||
|
source => $source ? {
|
||
|
'' => undef,
|
||
|
default => $source,
|
||
|
},
|
||
|
content => $template ? {
|
||
|
'' => undef,
|
||
|
default => template($template),
|
||
|
},
|
||
|
}
|
||
|
|
||
|
# Whole solr configuration directory can be recursively overriden
|
||
|
if $solr::source_dir {
|
||
|
file { 'solr.dir':
|
||
|
ensure => directory,
|
||
|
path => $solr::config_dir,
|
||
|
require => Class['solr::install'],
|
||
|
source => $source_dir,
|
||
|
recurse => true,
|
||
|
purge => $source_dir_purge,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Include custom class if $my_class is set
|
||
|
if $solr::my_class {
|
||
|
include $solr::my_class
|
||
|
}
|
||
|
|
||
|
|
||
|
# Provide puppi data, if enabled ( puppi => true )
|
||
|
if $solr::puppi == true {
|
||
|
$puppivars=get_class_args()
|
||
|
file { 'puppi_solr':
|
||
|
ensure => $solr::manage_file,
|
||
|
path => "${settings::vardir}/puppi/solr",
|
||
|
mode => '0644',
|
||
|
owner => 'root',
|
||
|
group => 'root',
|
||
|
require => Class['puppi'],
|
||
|
content => inline_template('<%= puppivars.to_yaml %>'),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
# Url check, if enabled ( monitor => true )
|
||
|
if $solr::monitor == true and $solr::url_check != '' {
|
||
|
monitor::url { 'solr_url':
|
||
|
enable => $solr::manage_monitor,
|
||
|
url => $solr::url_check,
|
||
|
pattern => $solr::url_pattern,
|
||
|
port => $solr::port,
|
||
|
target => $::fqdn,
|
||
|
tool => $solr::monitor_tool,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
# Include debug class is debugging is enabled
|
||
|
if $solr::debug == true {
|
||
|
file { 'debug_solr':
|
||
|
ensure => $solr::manage_file,
|
||
|
path => "${settings::vardir}/debug-solr",
|
||
|
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 %>'),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|