dev/provisioning/modules/elasticsearch/manifests/params.pp
changeset 28 b0b56e0f8c7f
child 406 cf0f23803a53
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     1 # == Class: elasticsearch::params
       
     2 #
       
     3 # This class exists to
       
     4 # 1. Declutter the default value assignment for class parameters.
       
     5 # 2. Manage internally used module variables in a central place.
       
     6 #
       
     7 # Therefore, many operating system dependent differences (names, paths, ...)
       
     8 # are addressed in here.
       
     9 #
       
    10 #
       
    11 # === Parameters
       
    12 #
       
    13 # This class does not provide any parameters.
       
    14 #
       
    15 #
       
    16 # === Examples
       
    17 #
       
    18 # This class is not intended to be used directly.
       
    19 #
       
    20 #
       
    21 # === Links
       
    22 #
       
    23 # * {Puppet Docs: Using Parameterized Classes}[http://j.mp/nVpyWY]
       
    24 #
       
    25 #
       
    26 # === Authors
       
    27 #
       
    28 # * Richard Pijnenburg <mailto:richard@ispavailability.com>
       
    29 #
       
    30 class elasticsearch::params {
       
    31 
       
    32   #### Default values for the parameters of the main module class, init.pp
       
    33 
       
    34   # ensure
       
    35   $ensure = 'present'
       
    36 
       
    37   # autoupgrade
       
    38   $autoupgrade = false
       
    39 
       
    40   # service status
       
    41   $status = 'enabled'
       
    42 
       
    43   # restart on configuration change?
       
    44   $restart_on_change = true
       
    45 
       
    46   # Purge configuration directory
       
    47   $purge_configdir = false
       
    48 
       
    49   $purge_package_dir = false
       
    50 
       
    51   # package download timeout
       
    52   $package_dl_timeout = 600 # 300 seconds is default of puppet
       
    53 
       
    54   $default_logging_level = 'INFO'
       
    55 
       
    56   $logging_defaults = {
       
    57     'action'                 => 'DEBUG',
       
    58     'com.amazonaws'          => 'WARN',
       
    59     'index.search.slowlog'   => 'TRACE, index_search_slow_log_file',
       
    60     'index.indexing.slowlog' => 'TRACE, index_indexing_slow_log_file',
       
    61   }
       
    62 
       
    63   #### Internal module values
       
    64 
       
    65   # User and Group for the files and user to run the service as.
       
    66   case $::kernel {
       
    67     'Linux': {
       
    68       $elasticsearch_user  = 'elasticsearch'
       
    69       $elasticsearch_group = 'elasticsearch'
       
    70     }
       
    71     'Darwin': {
       
    72       $elasticsearch_user  = 'elasticsearch'
       
    73       $elasticsearch_group = 'elasticsearch'
       
    74     }
       
    75     default: {
       
    76       fail("\"${module_name}\" provides no user/group default value
       
    77            for \"${::kernel}\"")
       
    78     }
       
    79   }
       
    80 
       
    81   # Download tool
       
    82 
       
    83   case $::kernel {
       
    84     'Linux': {
       
    85       $download_tool = 'wget --no-check-certificate -O'
       
    86     }
       
    87     'Darwin': {
       
    88       $download_tool = 'curl --insecure -o'
       
    89     }
       
    90     default: {
       
    91       fail("\"${module_name}\" provides no download tool default value
       
    92            for \"${::kernel}\"")
       
    93     }
       
    94   }
       
    95 
       
    96   # Different path definitions
       
    97   case $::kernel {
       
    98     'Linux': {
       
    99       $configdir   = '/etc/elasticsearch'
       
   100       $logdir      = '/var/log/elasticsearch'
       
   101       $package_dir = '/opt/elasticsearch/swdl'
       
   102       $installpath = '/opt/elasticsearch'
       
   103       $homedir     = '/usr/share/elasticsearch'
       
   104       $plugindir   = "${homedir}/plugins"
       
   105       $plugintool  = "${homedir}/bin/plugin"
       
   106       $datadir     = '/usr/share/elasticsearch/data'
       
   107     }
       
   108     default: {
       
   109       fail("\"${module_name}\" provides no config directory default value
       
   110            for \"${::kernel}\"")
       
   111     }
       
   112   }
       
   113 
       
   114   # packages
       
   115   case $::operatingsystem {
       
   116     'RedHat', 'CentOS', 'Fedora', 'Scientific', 'Amazon', 'OracleLinux', 'SLC': {
       
   117       # main application
       
   118       $package = [ 'elasticsearch' ]
       
   119     }
       
   120     'Debian', 'Ubuntu': {
       
   121       # main application
       
   122       $package = [ 'elasticsearch' ]
       
   123     }
       
   124     'OpenSuSE': {
       
   125       $package = [ 'elasticsearch' ]
       
   126     }
       
   127     default: {
       
   128       fail("\"${module_name}\" provides no package default value
       
   129             for \"${::operatingsystem}\"")
       
   130     }
       
   131   }
       
   132 
       
   133   # service parameters
       
   134   case $::operatingsystem {
       
   135     'RedHat', 'CentOS', 'Fedora', 'Scientific', 'OracleLinux', 'SLC': {
       
   136       $service_name       = 'elasticsearch'
       
   137       $service_hasrestart = true
       
   138       $service_hasstatus  = true
       
   139       $service_pattern    = $service_name
       
   140       $defaults_location  = '/etc/sysconfig'
       
   141       $pid_dir            = '/var/run/elasticsearch'
       
   142 
       
   143       if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
       
   144         $init_template     = 'elasticsearch.systemd.erb'
       
   145         $service_providers = 'systemd'
       
   146       } else {
       
   147         $init_template     = 'elasticsearch.RedHat.erb'
       
   148         $service_providers = 'init'
       
   149       }
       
   150 
       
   151     }
       
   152     'Amazon': {
       
   153       $service_name       = 'elasticsearch'
       
   154       $service_hasrestart = true
       
   155       $service_hasstatus  = true
       
   156       $service_pattern    = $service_name
       
   157       $defaults_location  = '/etc/sysconfig'
       
   158       $pid_dir            = '/var/run/elasticsearch'
       
   159       $init_template      = 'elasticsearch.RedHat.erb'
       
   160       $service_providers  = 'init'
       
   161     }
       
   162     'Debian': {
       
   163       $service_name       = 'elasticsearch'
       
   164       $service_hasrestart = true
       
   165       $service_hasstatus  = true
       
   166       $service_pattern    = $service_name
       
   167       $defaults_location  = '/etc/default'
       
   168       if versioncmp($::operatingsystemmajrelease, '8') >= 0 {
       
   169         $init_template     = 'elasticsearch.systemd.erb'
       
   170         $service_providers = 'systemd'
       
   171         $pid_dir           = '/var/run/elasticsearch'
       
   172       } else {
       
   173         $init_template     = 'elasticsearch.Debian.erb'
       
   174         $service_providers = [ 'init' ]
       
   175         $pid_dir           = false
       
   176       }
       
   177     }
       
   178     'Ubuntu': {
       
   179       $service_name       = 'elasticsearch'
       
   180       $service_hasrestart = true
       
   181       $service_hasstatus  = true
       
   182       $service_pattern    = $service_name
       
   183       $defaults_location  = '/etc/default'
       
   184 
       
   185       if versioncmp($::operatingsystemmajrelease, '15') >= 0 {
       
   186         $init_template     = 'elasticsearch.systemd.erb'
       
   187         $service_providers = 'systemd'
       
   188         $pid_dir           = '/var/run/elasticsearch'
       
   189       } else {
       
   190         $init_template     = 'elasticsearch.Debian.erb'
       
   191         $service_providers = [ 'init' ]
       
   192         $pid_dir           = false
       
   193       }
       
   194     }
       
   195     'Darwin': {
       
   196       $service_name       = 'FIXME/TODO'
       
   197       $service_hasrestart = true
       
   198       $service_hasstatus  = true
       
   199       $service_pattern    = $service_name
       
   200       $service_providers  = 'launchd'
       
   201       $defaults_location  = false
       
   202       $pid_dir            = false
       
   203     }
       
   204     'OpenSuSE': {
       
   205       $service_name       = 'elasticsearch'
       
   206       $service_hasrestart = true
       
   207       $service_hasstatus  = true
       
   208       $service_pattern    = $service_name
       
   209       $service_providers  = 'systemd'
       
   210       $defaults_location  = '/etc/sysconfig'
       
   211       $init_template      = 'elasticsearch.systemd.erb'
       
   212       $pid_dir            = '/var/run/elasticsearch'
       
   213     }
       
   214     default: {
       
   215       fail("\"${module_name}\" provides no service parameters
       
   216             for \"${::operatingsystem}\"")
       
   217     }
       
   218   }
       
   219 
       
   220 }