cookbook 'elasticsearch-cluster', '= 0.5.0'
elasticsearch-cluster (16) Versions 0.5.0 Follow3
Installs/Configures ElasticSearch Cluster
cookbook 'elasticsearch-cluster', '= 0.5.0', :supermarket
knife supermarket install elasticsearch-cluster
knife supermarket download elasticsearch-cluster
elasticsearch-cluster Cookbook
This is a Chef cookbook to manage ElasticSearch Cluster.
More features and attributes will be added over time, feel free to contribute
what you find missing!
For Production environment, always prefer the most recent release.
Dependency
Most Recent Release
cookbook 'elasticsearch-cluster', '~> 0.5.0'
From Git
cookbook 'elasticsearch-cluster', github: 'vkhatri/chef-elasticsearch-cluster'
Repository
https://github.com/vkhatri/chef-elasticsearch-cluster
Major Changes
v0.5.0
- resource
elasticsearch_plugin
attributeinstall_name
has been renamed toinstall_source
Supported OS
This cookbook was tested on Amazon (2015-03) & Ubuntu (14.04) Linux and expected to work on similar platform family OS.
Supported ElasticSearch Version
This cookbook was tested for ElasticSearch v1.6.0+.
Supported ElasticSearch Deployment
This cookbook supports both Package and Tarball based installation.
Cookbook Dependencies
-
java
cookbook -
yum
cookbook -
apt
cookbook
TODO
- add more locations to nginx vhost
- add specs
Recipes
elasticsearch-cluster::default
- default recipe (use it for run_list)elasticsearch-cluster::install
- install elasticsearch via package or tarballelasticsearch-cluster::java
- install java usingjava
cookbookelasticsearch-cluster::package
- install elasticsearch using repository packageelasticsearch-cluster::tarball
- install elasticsearch using tarballelasticsearch-cluster::user
- create elasticsearch user/group whennode['elasticsearch']['install_method']
is set totarball
elasticsearch-cluster::config
- configure elasticsearchelasticsearch-cluster::plugins
- install / remove plugins using node attributenode['elasticsearch']['plugins']
elasticsearch-cluster::scripts
- install / remove scripts using node attributenode['elasticsearch']['scripts']
HWRP elasticsearch_plugin
HWRP elasticsearch_plugin
manages elasticsearch plugins install / remove. It is a wrapper for plugin
binary.
For plugins validation (exists or not), it uses node API call to verify wheter required plugin or plugin version is installed.
version
is evaluated to verify the correct installedversion
. Github plugins versionvX.Y.Z
is not the same as plugin installed versionX.Y.Z
discovered by provider. Check provider for more details.
Install Plugin
elasticsearch_plugin 'cloud-aws' do
install_source 'elasticsearch/elasticsearch-cloud-aws'
version '2.7.0'
end
elasticsearch_plugin 'kopf' do
install_source 'lmenezes/elasticsearch-kopf'
end
Above HWRP resource will install two plugins: cloud-aws
and kopf
.
Remove Plugin
elasticsearch_plugin 'kopf' do
action :remove
end
Above HWRP resource will remove the kopf
plugin.
HWRP Options
- action (optional) - default :install, options: :install, :remove, :nothing
-
host (optional, String) - elasticsearch host (default:
node['elasticsearch']['config']['network.bind_host']
) -
port (optional, Integer) - elasticsearch port (default:
node['elasticsearch']['config']['http.port']
) -
install_source (optional, String) - plugin source to install, e.g. to install
kopf
plugin,install_source
would belmenezes/elasticsearch-kopf
- url (optional, String) - plugin url
- timeout (optional, String) - plugin install timeout
-
notify_restart (optional, TrueClass, FalseClass) - whether to restart elasticsearch service post plugin install (default:
false
) -
ignore_error (optional, TrueClass,FlaseClass) - whether to ignore error like unable to fetch installed plugins when service is down, could ignore other errors in the future (default:
true
) - version (optional, String) - plugin install version
HWRP elasticsearch_script
HWRP elasticsearch_script
manages elasticsearch scripts under directory node['elasticsearch']['scripts_dir']
. It is a wrapper for cookbook_file
resource to manage scripts.
Install Script
elasticsearch_script 'foo' do
cookbook 'cookbook'
source 'source'
end
Above HWRP resource will add script foo
.
Remove Script
elasticsearch_script 'foo' do
action :delete
end
Above HWRP resource will remove script foo
.
HWRP Options
- action (optional) - default :add, options: :add, :delete, :nothing
-
cookbook (optional, String) - script cookbook name for
cookbook_file
resource, required for action:add
-
source (optional, String) - default :name, script cookbook file source for
cookbook_file
resource
Manage Plugins using Node attribute
Using recipe plugins
, plugins can be installed or removed by node attribute node['elasticsearch']['plugins']
. Below is the role attributes to install and remove plugins.
"default_attributes": {
"elasticsearch": {
"plugins": {
"bigdesk": {
"install_source": "lukas-vlcek/bigdesk"
},
"kopf": {
"install_source": "lmenezes/elasticsearch-kopf"
},
"head": {
"action": "remove"
}
}
}
}
Check out HWRP elasticsearch_plugin
or recipe plugins
for more info on attributes.
Manage Scripts using Node attribute
Using recipe scripts
, scripts can be added or deleted by node attribute node['elasticsearch']['scripts']
. Below is the role attributes to add and delete scripts.
"default_attributes": {
"elasticsearch": {
"plugins": {
"script-name": {
"cookbook": "foo",
"source": "foo"
}
}
}
}
Check out HWRP elasticsearch_script
or recipe scripts
for more info on attributes.
Cookbook Advanced Attributes
default['elasticsearch']['config']['cluster.name']
(default:nil
): elasticsearch cluster name, required to setup elasticsearch clusterdefault['elasticsearch']['install_method']
(default:package
): elasticsearch install method, options: package tarballdefault['elasticsearch']['install_java']
(default:true
): whether to install java using cookbookjava
default['elasticsearch']['service_action']
(default:[:enable, :start]
): elasticsearch service resource actiondefault['elasticsearch']['notify_restart']
(default:false
): whether to notify elasticsearch service on any config changedefault['elasticsearch']['setup_user']
(default:true
): whether to setup elasticsearch service user when installing via tarballdefault['elasticsearch']['cookbook']
(default:elasticsearch-cluster
): cookbook to use for elasticsearch configuration file/template sourcedefault['elasticsearch']['plugins']
(default:{}
): nodeHash
attribute to install/remove elasticsearch plugins.default['elasticsearch']['scripts']
(default:{}
): nodeHash
attribute to install/remove elasticsearch scripts.default['elasticsearch']['auto_java_memory']
(default:false
): whether to allocate maximum possible heap sizedefault['elasticsearch']['auto_system_memory']
(default:768
): minimum memory to keep for OS while allocating maximum possible memory to elasticsearch, used with node['elasticsearch']['auto_java_memory']default['elasticsearch']['use_chef_search']
(default:false
): whether to use Chef Search to find elasticsearch cluster nodes in an environment
for a given chef elasticsearch roledefault['elasticsearch']['search_role_name']
(default:elasticsearch_cluster
): chef role associated with elasticsearch nodes which add this cookbook
to elasticsearch nodes run listdefault['elasticsearch']['search_cluster_name_attr']
(default:nil
): node attribute to match elasticsearch cluster name, not necessary applicable to alldefault['elasticsearch']['tarball_purge']
(default:false
): purge older installed versions for tarball install methoddefault['elasticsearch']['enable_sensitive']
(default:true
): enable sensitive resource attribute for configuration resources
Cookbook Core Attributes
default['elasticsearch']['version']
(default:1.7.2
): elasticsearch version to installdefault['elasticsearch']['version_suffix']
(default:calculated
): elasticsearch package version suffixdefault['elasticsearch']['user']
(default:elasticsearch
): elasticsearch service userdefault['elasticsearch']['group']
(default:elasticsearch
): elasticsearch service groupdefault['elasticsearch']['conf_dir']
(default:/etc/elasticsearch
): elasticsearch configuration directorydefault['elasticsearch']['data_dir']
(default:/var/lib/elasticsearch
): elasticsearch data directorydefault['elasticsearch']['log_dir']
(default:/var/log/elasticsearch
): elasticsearch log directorydefault['elasticsearch']['work_dir']
(default:/tmp/elasticsearch
): elasticsearch temporary files directorydefault['elasticsearch']['plugins_dir']
(default:calcualted
): elasticsearch plugins directorydefault['elasticsearch']['conf_file']
(default:/etc/elasticsearch/elasticsearch.yml
): elasticsearch configuration filedefault['elasticsearch']['logging_conf_file']
(default:/etc/elasticsearch/logging.yml
): elasticsearch logging configuration filedefault['elasticsearch']['tarball_url']
(default:auto
): elasticsearch tarball download urldefault['elasticsearch']['tarball_checksum']
(default:versions
): elasticsearch tarball version source sha256sumdefault['elasticsearch']['parent_dir']
(default:/usr/local/elasticsearch
): elasticsearch directory for tarball based installationdefault['elasticsearch']['install_dir']
(default:/usr/local/elasticsearch/elasticsearch
): elasticsearch symlink to current version source directory (for tarball based installation)default['elasticsearch']['source_dir']
(default:calculated
): elasticsearch current version directory (for tarball based installation)default['elasticsearch']['home_dir']
(default:calculated
): elasticsearch home directorydefault['elasticsearch']['sysconfig_file']
(default:calculated
): elasticsearch service config file locationdefault['elasticsearch']['umask']
(default:0022
): file/directory umask for execute resource (for tarball based installation)default['elasticsearch']['mode']
(default:0755
): file/directory resource mode
Service Attributes
default['elasticsearch']['sysconfig']['ES_HEAP_NEWSIZE']
(default:calculated
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['ES_DIRECT_SIZE']
(default:nil
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['ES_JAVA_OPTS']
(default:nil
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['MAX_OPEN_FILES']
(default:65_535
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['MAX_LOCKED_MEMORY']
(default:unlimited
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['MAX_MAP_COUNT']
(default:262_144
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['ES_RESTART_ON_UPGRADE']
(default:true
): elasticsearch service config file parameterdefault['elasticsearch']['sysconfig']['ES_HEAP_SIZE']
(default:calculated
): elasticsearch service config file parameter
ElasticSearch Configuration File Attributes
default['elasticsearch']['config']['cluster.name']
(default:nil
): elasticsearch configuration parameterdefault['elasticsearch']['config']['node.name']
(default:node.name
): elasticsearch configuration parameterdefault['elasticsearch']['config']['node.master']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['node.data']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['node.max_local_storage_nodes']
(default:1
): elasticsearch configuration parameterdefault['elasticsearch']['config']['index.number_of_shards']
(default:5
): elasticsearch configuration parameterdefault['elasticsearch']['config']['index.number_of_replicas']
(default:1
): elasticsearch configuration parameterdefault['elasticsearch']['config']['path.conf']
(default:node['elasticsearch']['conf_dir']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['path.data']
(default:node['elasticsearch']['data_dir']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['path.work']
(default:node['elasticsearch']['work_dir']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['path.logs']
(default:node['elasticsearch']['log_dir']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['path.plugins']
(default:node['elasticsearch']['plugins_dir']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['bootstrap.mlockall']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['network.bind_host']
(default:node['ipaddress']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['network.publish_host']
(default:node['ipaddress']
): elasticsearch configuration parameterdefault['elasticsearch']['config']['transport.tcp.port']
(default:9300
): elasticsearch configuration parameterdefault['elasticsearch']['config']['transport.tcp.compress']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['http.port']
(default:9200
): elasticsearch configuration parameterdefault['elasticsearch']['config']['discovery.zen.minimum_master_nodes']
(default:1
): elasticsearch configuration parameterdefault['elasticsearch']['config']['discovery.zen.ping.timeout']
(default:3s
): elasticsearch configuration parameterdefault['elasticsearch']['config']['discovery.zen.ping.multicast.enabled']
(default:false
): elasticsearch configuration parameterdefault['elasticsearch']['config']['discovery.zen.ping.unicast.hosts']
(default:[]
): elasticsearch configuration parameterdefault['elasticsearch']['config']['action.auto_create_index']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['action.disable_delete_all_indices']
(default:true
): elasticsearch configuration parameterdefault['elasticsearch']['config']['script.disable_dynamic']
(default:true
): elasticsearch configuration parameter
ElasticSearch Configuration From Data Bag Item
-
default['elasticsearch']['databag_configs']
(default:nil
): elasticsearch configuration parameters from data bag- For example, following configuration will get data bag named 'aws_keys' and data bag item 'elasticsearch'.
- The key of 'config_items' will be used as configuration name.
- The value of 'config_items' will be used for fetching value from data bag.
'elasticsearch' => {
'databag_configs' => [
{
'name' => 'aws_keys',
'item' => 'elasticsearch',
'config_items' => {
'cloud.aws.access_key' => 'data_bag_key_for_access_key',
'cloud.aws.secret_key' => 'data_bag_key_for_secret_key'
}
}
]
}
Elasticsearch YUM/APT Repository Attributes
default['elasticsearch']['repo_version']
(default:calculated
): elasticsearch repository versiondefault['elasticsearch']['yum']['description']
(default:calculated
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['gpgcheck']
(default:true
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['enabled']
(default:true
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['baseurl']
(default:calculated
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['gpgkey']
(default:https://packages.elasticsearch.org/GPG-KEY-elasticsearch
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['mirrorlist']
(default:nil
): elasticsearch yum reporitory attributedefault['elasticsearch']['yum']['action']
(default::create
): elasticsearch yum reporitory attributedefault['elasticsearch']['apt']['description']
(default:calculated
): elasticsearch apt reporitory attributedefault['elasticsearch']['apt']['components']
(default:['stable', 'main']
): elasticsearch apt reporitory attributedefault['elasticsearch']['apt']['uri']
(default:calculated
): elasticsearch apt reporitory attributedefault['elasticsearch']['apt']['key']
(default:http://packages.elasticsearch.org/GPG-KEY-elasticsearch
): elasticsearch apt reporitory attributedefault['elasticsearch']['apt']['action']
(default::add
): elasticsearch apt reporitory attribute
Contributing
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write your change
- Write tests for your change (if applicable)
- Run the tests (
rake & rake knife
), ensuring they all pass - Write new resource/attribute description to
README.md
- Write description about changes to PR
- Submit a Pull Request using Github
Copyright & License
Authors:: Virender Khatri and Contributors
<pre>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</pre>
Dependent cookbooks
java >= 0.0.0 |
yum >= 0.0.0 |
apt >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
elasticsearch-cluster CHANGELOG
This file is used to list changes made in each version of the elasticsearch-cluster cookbook.
0.5.0
Virender Khatri - #49, fix for plugin syntax changed in es 2.x
Virender Khatri - #50, bump es version to 1.7.3
Virender Khatri - #51, plugins dir should be created under install_dir for tarball installation
Virender Khatri - #52, rename resource plugin attribute install_name to install_source
0.4.7
Virender Khatri - #39, script.disable_dynamic is not supported in v2.x
Virender Khatri - #40, update init.d scripts resource type from template to cookbook_file
Virender Khatri - #41, update cookbook for wrapper cookbook support
Virender Khatri - #42, move default attribute tarball_url to recipe tarball
Virender Khatri - #43, manage logging.yml configuration file
Virender Khatri - #44, add attribute to enable sensitive
Virender Khatri - #46, link node['elasticsearch']['install_dir'] should always notify service restart and does
not requireservice
restartVirender Khatri - #47, added path.scripts directory resource config
Virender Khatri - #48, add resource script
0.3.8
WEI WU - set databag config related attributes before generating template file. Instead of storing in chef node.
WEI WU - add sensitive flag only if chef respond to this flag
Virender Khatri - #32, move tarball checksum to helper method
Virender Khatri - #33, move install recipe directory resources to install method recipe
Virender Khatri - #34, bump elasticsearch version to 1.7.2
Virender Khatri - #35, manage es config dir in favor of tarball install method
Virender Khatri - #36, update sysv init templates
Virender Khatri - #37, add feature to purge old tarball es revisions
0.3.0
WEI WU - Fixed config file location issue on CentOS7
Grant Ridder - Updated .rubocop.yml
Grant Ridder - Fixed ruby syntax
Grant Ridder - Updated test kitchen platforms
0.2.7
Virender Khatri - issue #23, Consider using directory-based plugin detection
Virender Khatri - issue #24, add attribute host & port to plugin resource
Virender Khatri - issue #25, plugin version is not the same as installed version
Virender Khatri - issue #26, bump elasticsearch version to 1.7.1
0.2.5
Michael Klishin - Update README.md
Virender Khatri - issue #15, kopf and bigdesk are always installed, removed default plugins
Virender Khatri - issue #17, update elasticsearch service resource to delayed start
Virender Khatri - issue #18, add attribute ignore_error to plugin resource for issue #16
Virender Khatri - issue #19, add attribute notify_restart to plugin resource
0.2.2
Michael Klishin - Provide dependency info in the README
Virender Khatri - issue #13, added 1.7.0 checksum attribute default['elasticsearch']['tarball_checksum']['1.7.0']
0.2.0
Virender Khatri - added lwrp
elasticsearch_plugin
Virender Khatri - bumped elasticsearch version to 1.7.0
Virender Khatri - added attribute default[elasticsearch][bin_dir]
Virender Khatri - move common directory resources to recipe install
0.1.8
Virender Khatri - added os support and README update
Virender Khatri - issue #1, package install needs to manage ES data, work and log dir
Virender Khatri - issue #2, add ES_JAVA_OPTS with double quotes
Virender Khatri - issue #3, added missing attribute default['elasticsearch']['cookbook']
Virender Khatri - issue #4, added config attribute name for elasticsearch.yml file
Virender Khatri - issue #5, disable auto_java_memory by default
Virender Khatri - issue #6, set default ES_HEAP_SIZE value to half of the memory
0.1.1
- Virender Khatri - README and minor updates
0.1.0
- Virender Khatri - Initial release of elasticsearch-cluster
Check the Markdown Syntax Guide for help with Markdown.
The Github Flavored Markdown page describes the differences between markdown on github and standard markdown.
Foodcritic Metric
0.5.0 passed this metric
0.5.0 passed this metric