engineyard/ey-cloud-recipes — pull request #185 by radamanthus (2014-11-20 05:57:01+00:00)
Title: Update the elasticsearch recipe to use Java 7 and Elasticsearch 1.4.0

NOTE: This recipe installs Elasticsearch 1.4 and requires Java 7 or later. It will only work on the Gentoo 12.11 stack; the Java 7 ebuild is not available on Gentoo 2009. We do not recommend running older versions of Elasticsearch - versions prior to 1.2 have a remote code execution vulnerability, see http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-3120

Summary of changes

* Load the Java package name and version to install from attributes so that it’s easier to modify later
* Default Java is dev-java/icedtea-bin version 7.2.3.3-r1
* Run eselect after installing Java to ensure that the correct JDK is set
* Increase Java stack size when running Elasticsearch to 256k (needed by newer version of Elasticsearch, see * https://groups.google.com/forum/#!topic/elasticsearch/cfihFvFg08Q)
* Skip the recipe when there are no instances named elasticsearch_x (for default recipe)
* Remove references to JRuby in README.md

The current version of the recipe installs Elasticsearch on _all_ util instances, which is a bug and is inconsistent with README.md. I have updated README.md to make it clearer that the ways to use this recipe are:

(1) on a solo environment - use include_recipe elasticsearch::non_util
(2) on a small cluster with light load or overpowered app_master, run on app_master - use include_recipe elasticsearch::non_util
(3) on an ordinary cluster with dedicated util instances for Elasticsearch - use include_recipe elasticsearch. Name the elasticsearch instances elasticsearch_0, elasticsearch_1, etc.

Tests done
- include_recipe “elasticsearch” on a cluster with 3 util instances named elasticsearch_0, elasticsearch_1 and nonelasticsearch. Elasticsearch should be installed on elasticsearch_0 and _1, and not on the other instances
- include_recipe “elasticsearch::non_util” on a cluster - app_master should have ES running after the chef run
- include_recipe “elasticsearch::non_util” on a solo - instance should have ES running after the chef run