Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/haf/puppet-elasticsearch

A puppet-elasticsearch module that has an edge over github.com/elasticsearch/puppet-elasticsearch.
https://github.com/haf/puppet-elasticsearch

Last synced: about 1 month ago
JSON representation

A puppet-elasticsearch module that has an edge over github.com/elasticsearch/puppet-elasticsearch.

Awesome Lists containing this project

README

        

# puppet-elasticsearch

A puppet module for managing elasticsearch nodes

http://www.elasticsearch.org/

[![Build Status](https://travis-ci.org/elasticsearch/puppet-elasticsearch.png?branch=master)](https://travis-ci.org/elasticsearch/puppet-elasticsearch)

## Usage

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 use a local deb or rpm, specify it like so:

class { 'elasticsearch':
pkg_source => 'puppet:///path_to_file'
}

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'
}
}
}

## Defaults file

You can populate the defaults file ( /etc/defaults/elasticsearch or /etc/sysconfig/elasticsearch )

class { 'elasticsearch':
service_settings => { 'ES_USER' => 'elasticsearch', 'ES_GROUP' => 'elasticsearch' }
}

## Manage templates

### Add a new template

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

### Delete a template

elasticsearch::template { 'templatename':
delete => true
}

### Replace a template

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

### 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 python bindings](http://www.elasticsearch.org/guide/clients/):

elasticsearch::python { "rawes": }

## Plugins

Install [a variety of plugins](http://www.elasticsearch.org/guide/clients/):

### From official repository:

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

### From custom url:

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