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.

puppet-elasticsearch's People

Contributors

electrical avatar jlambert121 avatar brucem avatar igalic avatar mbornoz avatar acaire avatar martinseener avatar chrisboulton avatar cdenneen avatar salekseev avatar spuder avatar joschi avatar antaflos avatar blalor avatar mattrco avatar bodgit avatar savar avatar vjanelle avatar

Watchers

James Cloos avatar Ken Geis avatar

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.