Puppet Class: solr

Inherits:
solr::params
Inherited by:
solr::install
Defined in:
manifests/init.pp

Overview

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/>

Parameters:

  • install (Any) (defaults to: params_lookup( 'install' ))
  • install_source (Any) (defaults to: params_lookup( 'install_source' ))
  • install_destination (Any) (defaults to: params_lookup( 'install_destination' ))
  • install_precommand (Any) (defaults to: params_lookup( 'install_precommand' ))
  • install_postcommand (Any) (defaults to: params_lookup( 'install_postcommand' ))
  • url_check (Any) (defaults to: params_lookup( 'url_check' ))
  • url_pattern (Any) (defaults to: params_lookup( 'url_pattern' ))
  • my_class (Any) (defaults to: params_lookup( 'my_class' ))
  • source (Any) (defaults to: params_lookup( 'source' ))
  • source_dir (Any) (defaults to: params_lookup( 'source_dir' ))
  • source_dir_purge (Any) (defaults to: params_lookup( 'source_dir_purge' ))
  • template (Any) (defaults to: params_lookup( 'template' ))
  • options (Any) (defaults to: params_lookup( 'options' ))
  • absent (Any) (defaults to: params_lookup( 'absent' ))
  • monitor (Any) (defaults to: params_lookup( 'monitor' ))
  • monitor_tool (Any) (defaults to: params_lookup( 'monitor_tool' ))
  • puppi (Any) (defaults to: params_lookup( 'puppi' ))
  • debug (Any) (defaults to: params_lookup( 'debug' ))
  • package (Any) (defaults to: params_lookup( 'package' ))
  • config_dir (Any) (defaults to: params_lookup( 'config_dir' ))
  • config_file (Any) (defaults to: params_lookup( 'config_file' ))
  • config_file_mode (Any) (defaults to: params_lookup( 'config_file_mode' ))
  • config_file_owner (Any) (defaults to: params_lookup( 'config_file_owner' ))
  • config_file_group (Any) (defaults to: params_lookup( 'config_file_group' ))
  • data_dir (Any) (defaults to: params_lookup( 'data_dir' ))
  • log_dir (Any) (defaults to: params_lookup( 'log_dir' ))
  • log_file (Any) (defaults to: params_lookup( 'log_file' ))


123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'manifests/init.pp', line 123

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

}