Giter Club home page Giter Club logo

puppet-elasticsearch's Introduction

puppet-elasticsearch

A Puppet module for managing elasticsearch nodes.

Build Status

Requirements

  • Puppet 2.7.x or better.
  • The stdlib Puppet library.

Optional:

  • The apt Puppet library when using repo management on Debian/Ubuntu.

Usage examples

Installation, make sure service is running and will be started at boot time:

 class { 'elasticsearch': }

Install a certain version:

 class { 'elasticsearch':
   version => '0.90.3'
 }

This assumes an elasticsearch package is already available to your distribution's package manager. To install it in a different way:

To download from http/https/ftp source:

 class { 'elasticsearch':
   package_url => 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.deb'
 }

To download from a puppet:// source:

 class { 'elasticsearch':
   package_url => 'puppet:///path/to/elasticsearch-0.90.7.deb'
 }

Or use a local file source:

 class { 'elasticsearch':
   package_url => 'file:/path/to/elasticsearch-0.90.7.deb'
 }

Automatic upgrade of the software ( default set to false ):

 class { 'elasticsearch':
   autoupgrade => true
 }

Removal/decommissioning:

 class { 'elasticsearch':
   ensure => 'absent'
 }

Install everything but disable service(s) afterwards:

 class { 'elasticsearch':
   status => 'disabled'
 }

Disable automated restart of Elasticsearch on config file change:

 class { 'elasticsearch':
   restart_on_change => false
 }

For the config variable a hash needs to be passed:

 class { 'elasticsearch':
   config                   => {
     'node'                 => {
       'name'               => 'elasticsearch001'
     },
     'index'                => {
       'number_of_replicas' => '0',
       'number_of_shards'   => '5'
     },
     'network'              => {
       'host'               => $::ipaddress
     }
   }
 }

Short write up of the config hash is also possible.

Instead of writing the full hash representation:

 class { 'elasticsearch':
   config                 => {
     'cluster'            => {
       'name'             => 'ClusterName',
       'routing'          => {
         'allocation'     => {
           'awareness'    => {
             'attributes' => 'rack'
           }
         }
       }
     }
   }
 }

You can write the dotted key naming:

 class { 'elasticsearch':
   config => {
     'cluster' => {
       'name' => 'ClusterName',
       'routing.allocation.awareness.attributes' => 'rack'
     }
   }
 }

Manage templates

Add a new template

This will install and/or replace the template in Elasticearch

 elasticsearch::template { 'templatename':
   file => 'puppet:///path/to/template.json'
 }

Delete a template

 elasticsearch::template { 'templatename':
   ensure => 'absent'
 }

Host

Default it uses localhost:9200 as host. you can change this with the 'host' and 'port' variables

 elasticsearch::template { 'templatename':
   host => $::ipaddress,
   port => 9200
 }

Bindings / clients

Install a variety of clients/bindings:

Python

 elasticsearch::python { 'rawes': }

Ruby

 elasticsearch::ruby { 'elasticsearch': }

Plugins

Install a variety of plugins:

From official repository:

 elasticsearch::plugin{'mobz/elasticsearch-head':
   module_dir => 'head'
 }

From custom url:

 elasticsearch::plugin{ 'elasticsearch-jetty':
   module_dir => 'jetty',
   url        => 'https://oss-es-plugins.s3.amazonaws.com/elasticsearch-jetty/elasticsearch-jetty-0.90.0.zip'
 }

Java Install

Most sites will manage Java seperately; however, this module can attempt to install Java as well.

 class { 'elasticsearch':
   java_install => true
 }

Specify a particular Java package (version) to be installed:

 class { 'elasticsearch':
   java_install => true,
   java_package => 'packagename'
 }

Repository management

Most sites will manage repositories seperately; however, this module can manage the repository for you.

class { 'elasticsearch':
  manage_repo  => true,
  repo_version => '1.0',
}

Note: When using this on Debian/Ubuntu you will need to add the Puppetlabs/apt module to your modules.

Service Management

Currently only the basic SysV-style init service provider is supported but other systems could be implemented as necessary (pull requests welcome).

init

Defaults File

The defaults file (/etc/defaults/elasticsearch or /etc/sysconfig/elasticsearch) for the Logstash service can be populated as necessary. This can either be a static file resource or a simple key value-style hash object, the latter being particularly well-suited to pulling out of a data source such as Hiera.

file source
 class { 'elasticsearch':
   init_defaults_file => 'puppet:///path/to/defaults'
 }
hash representation
 $config_hash = {
   'ES_USER' => 'elasticsearch',
   'ES_GROUP' => 'elasticsearch',
 }

 class { 'elasticsearch':
   init_defaults => $config_hash
 }

Support

Need help? Join us in #elasticsearch on Freenode IRC or subscribe to the [email protected] mailing list.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.