Last active
January 20, 2017 14:40
-
-
Save c0psrul3/8b00e35861cabf46fb3401e6428e8378 to your computer and use it in GitHub Desktop.
Elasticsearch rc start/stop script for initrc and openrc on TrueOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
name="elasticsearch" | |
: ${es_user:=elasticsearch} | |
: ${es_group:=elasticsearch} | |
# set config dir (-Epath.conf) | |
: ${es_pathconf:=/opt/elasticsearch/config} | |
: ${es_pidfile:=/var/run/elasticsearch/elasticsearch.pid} | |
: ${es_tmpdir:=/tmp/elasticsearch} | |
: ${es_pathdata:=/var/db/elasticsearch} | |
: ${es_pathlogs:=/var/log/elasticsearch} | |
### Example use of configs at startup: | |
# ./bin/elasticsearch -Epath.conf=/path/to/my/config/ | |
# | |
# node.name: ${HOSTNAME} | |
# network.host: ${ES_NETWORK_HOST} | |
# ./bin/elasticsearch -Edefault.node.name=My_Node | |
# | |
### Important configs: | |
# path.data and path.logs | |
# cluster.name | |
# node.name | |
# bootstrap.memory_lock | |
# network.host | |
# discovery.zen.ping.unicast.hosts | |
# discovery.zen.minimum_master_nodes | |
: ${ES_HOME:=/opt/elasticsearch/elasticsearch-5.1.1} | |
# Try to determine what JAVA_HOME should be | |
if [[ -z $JAVA_HOME ]] ; then | |
if [[ -d /usr/local/openjdk8-jre ]] ; then | |
JAVA_HOME=/usr/local/openjdk8-jre | |
else | |
read -r -a _Js <$(for _J in $(java -version 2>&1 |awk '{print $1}') ; do | |
find /usr/local -type d -name "${_J}*" | |
done 2> /dev/null ) | |
JAVA_HOME=${_Js[0]} | |
fi | |
fi | |
# set JAVA_HOME to the dir of java k, if all else fails | |
: ${JAVA_HOME:=$(dirname $(which java))} | |
# set Elasticsearch execution parameters (used when starting ES) | |
declare -a es_args | |
if [[ $1 != "--fg" ]] ; then | |
es_args+=("--daemonize") | |
fi | |
es_args+=("--pidfile=${es_pidfile}") | |
if [[ -d ${es_pathconf} ]] ; then | |
es_args+=("-Epath.conf=${es_pathconf}") | |
else | |
echo -e "No configuration directory defined.\t(-Epath.conf)" > /dev/stderr | |
exit 3 | |
fi | |
## or... maybe use a single var.? | |
command_args="--pidfile=${es_pidfile}" | |
if [[ $1 != "--fg" ]] ; then | |
command_args="--daemon ${command_args}" | |
fi | |
_es_precmd() { | |
touch ${es_pidfile} | |
chown ${es_user}:${es_group} ${es_pidfile} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_tmpdir} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_pathdata} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_pathlogs} | |
} | |
#checkconfig() { | |
# | |
#} | |
status() { | |
status_msg="" | |
es_pid=$(cat ${es_pidfile}) | |
if [[ $(ps -U ${es_user} -o pid='' ${es_pid} == ${es_pid}) ]] ; then | |
status_msg="is running" | |
else | |
status_msg="is not running" | |
fi | |
echo -e "${name} ${status_msg}." > /dev/stderr | |
return ${retVal} | |
} | |
start() { | |
echo -e "Starting ${name}..." ; sleep 1 | |
#sudo -u ${es_user} ES_HOME=${ES_HOME} ${ES_HOME}/bin/${name} ${es_args[@]} | |
retVal="$?" | |
echo "${es_user} ES_HOME=${ES_HOME} ${ES_HOME}/bin/${name} ${es_args[@]}" | |
return ${retVal} | |
} | |
stop() { | |
echo -e "stopping ${name}..." ; sleep 1 | |
sudo -u ${es_user} kill $(cat ${es_pidfile}) | |
retVal="$?" | |
return ${retVal} | |
} | |
$@ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
name="elasticsearch" | |
: ${es_user:=elasticsearch} | |
: ${es_group:=elasticsearch} | |
# set config dir (-Epath.conf) | |
: ${es_pathconf:=/opt/elasticsearch/config} | |
: ${es_pidfile:=/var/run/elasticsearch/elasticsearch.pid} | |
: ${es_tmpdir:=/tmp/elasticsearch} | |
: ${es_pathdata:=/var/db/elasticsearch} | |
: ${es_pathlogs:=/var/log/elasticsearch} | |
### Example use of configs at startup: | |
# ./bin/elasticsearch -Epath.conf=/path/to/my/config/ | |
# | |
# node.name: ${HOSTNAME} | |
# network.host: ${ES_NETWORK_HOST} | |
# ./bin/elasticsearch -Edefault.node.name=My_Node | |
# | |
### Important configs: | |
# path.data and path.logs | |
# cluster.name | |
# node.name | |
# bootstrap.memory_lock | |
# network.host | |
# discovery.zen.ping.unicast.hosts | |
# discovery.zen.minimum_master_nodes | |
: ${ES_HOME:=/opt/elasticsearch/elasticsearch-5.1.1} | |
# Try to determine what JAVA_HOME should be | |
if [[ -z $JAVA_HOME ]] ; then | |
if [[ -d /usr/local/openjdk8-jre ]] ; then | |
JAVA_HOME=/usr/local/openjdk8-jre | |
else | |
read -r -a _Js <$(for _J in $(java -version 2>&1 |awk '{print $1}') ; do | |
find /usr/local -type d -name "${_J}*" | |
done 2> /dev/null ) | |
JAVA_HOME=${_Js[0]} | |
fi | |
fi | |
# set JAVA_HOME to the dir of java k, if all else fails | |
: ${JAVA_HOME:=$(dirname $(which java))} | |
# set Elasticsearch execution parameters (used when starting ES) | |
declare -a es_args | |
if [[ $1 != "--fg" ]] ; then | |
es_args+=("--daemonize") | |
fi | |
es_args+=("--pidfile=${es_pidfile}") | |
if [[ -d ${es_pathconf} ]] ; then | |
es_args+=("-Epath.conf=${es_pathconf}") | |
else | |
echo -e "No configuration directory defined.\t(-Epath.conf)" > /dev/stderr | |
exit 3 | |
fi | |
## or... maybe use a single var.? | |
command_args="--pidfile=${es_pidfile}" | |
if [[ $1 != "--fg" ]] ; then | |
command_args="--daemon ${command_args}" | |
fi | |
_es_precmd() { | |
touch ${es_pidfile} | |
chown ${es_user}:${es_group} ${es_pidfile} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_tmpdir} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_pathdata} | |
/usr/bin/install -d -o ${es_user} -g ${es_group} -m 750 ${es_pathlogs} | |
} | |
#checkconfig() { | |
# | |
#} | |
status() { | |
status_msg="" | |
es_pid=$(cat ${es_pidfile}) | |
if [[ $(ps -U ${es_user} -o pid='' ${es_pid} == ${es_pid}) ]] ; then | |
status_msg="is running" | |
else | |
status_msg="is not running" | |
fi | |
echo -e "${name} ${status_msg}." > /dev/stderr | |
return ${retVal} | |
} | |
start() { | |
echo -e "Starting ${name}..." ; sleep 1 | |
#sudo -u ${es_user} ES_HOME=${ES_HOME} ${ES_HOME}/bin/${name} ${es_args[@]} | |
retVal="$?" | |
echo "${es_user} ES_HOME=${ES_HOME} ${ES_HOME}/bin/${name} ${es_args[@]}" | |
return ${retVal} | |
} | |
stop() { | |
echo -e "stopping ${name}..." ; sleep 1 | |
sudo -u ${es_user} kill $(cat ${es_pidfile}) | |
retVal="$?" | |
return ${retVal} | |
} | |
$@ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# $FreeBSD: head/textproc/elasticsearch2/files/elasticsearch.in 414918 2016-05-10 04:38:12Z tj $ | |
# | |
# PROVIDE: elasticsearch | |
# REQUIRE: NETWORKING SERVERS | |
# BEFORE: DAEMON | |
# KEYWORD: shutdown | |
# | |
# Add the following line to /etc/rc.conf to enable elasticsearch: | |
# | |
# elasticsearch_enable="YES" | |
# | |
# elasticsearch_user (username): Set to elasticsearch by default. | |
# Set it to required username. | |
# elasticsearch_group (group): Set to elasticsearch by default. | |
# Set it to required group. | |
# elasticsearch_config (path): Set to /usr/local/etc/elasticsearch/elasticsearch.yml by default. | |
# Set it to the config file location. | |
# elasticsearch_min_mem (num): Minumum JVM heap size, 256m by default. | |
# elasticsearch_max_mem (num): Maximum JVM heap size, 1g by default. | |
# elasticsearch_props (args): Additional java properties or arguments. | |
# elasticsearch_tmp (path): Set to /var/tmp/elasticsearch by default. | |
# Set it to the path to be used for temp files. | |
# | |
. /etc/rc.subr | |
name=elasticsearch | |
rcvar=elasticsearch_enable | |
load_rc_config ${name} | |
: ${elasticsearch_enable:="NO"} | |
: ${elasticsearch_user:=elasticsearch} | |
: ${elasticsearch_group:=elasticsearch} | |
: ${elasticsearch_config:="/usr/local/etc/elasticsearch"} | |
: ${elasticsearch_tmp:="/var/tmp/elasticsearch"} | |
required_files="${elasticsearch_config}/elasticsearch.yml" | |
_pidprefix="/var/run/elasticsearch" | |
pidfile="${_pidprefix}.pid" | |
extra_commands="console status" | |
console_cmd="elasticsearch_console" | |
start_precmd="elasticsearch_precmd" | |
status_cmd="elasticsearch_status" | |
stop_cmd="elasticsearch_stop" | |
command="/usr/local/lib/elasticsearch/bin/elasticsearch" | |
command_args="-d --pidfile=${pidfile}" | |
elasticsearch_precmd() | |
{ | |
touch ${pidfile} | |
chown ${elasticsearch_user}:${elasticsearch_group} ${pidfile} | |
/usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 750 ${elasticsearch_tmp} | |
/usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 750 /var/db/elasticsearch | |
/usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 750 /var/log/elasticsearch | |
} | |
elasticsearch_console() | |
{ | |
command_args="" | |
run_rc_command "start" | |
} | |
elasticsearch_stop() | |
{ | |
rc_pid=$(elasticsearch_check_pidfile $pidfile) | |
if [ -z "$rc_pid" ]; then | |
[ -n "$rc_fast" ] && return 0 | |
echo "${name} not running? (check $pidfile)." | |
return 1 | |
fi | |
echo "Stopping ${name}." | |
kill ${rc_pid} 2> /dev/null | |
} | |
elasticsearch_status() | |
{ | |
rc_pid=$(elasticsearch_check_pidfile $pidfile) | |
if [ -z "$rc_pid" ]; then | |
[ -n "$rc_fast" ] && return 0 | |
echo "${name} not running? (check $pidfile)." | |
return 1 | |
fi | |
echo "${name} is running as pid ${rc_pid}." | |
} | |
elasticsearch_check_pidfile() | |
{ | |
_pidfile=$1 | |
if [ -z "$_pidfile" ]; then | |
err 3 'USAGE: elasticsearch_check_pidfile pidfile' | |
fi | |
if [ ! -f $_pidfile ]; then | |
debug "pid file ($_pidfile): not readable." | |
return | |
fi | |
read _pid _junk < $_pidfile | |
if [ -z "$_pid" ]; then | |
debug "pid file ($_pidfile): no pid in file." | |
return | |
fi | |
if [ -n "`/usr/local/bin/jps -l | grep -e "^$_pid"`" ]; then | |
echo -n $_pid | |
fi | |
} | |
if [ -n "$2" ]; then | |
profile="$2" | |
if [ "x${elasticsearch_profiles}" != "x" ]; then | |
pidfile="${_pidprefix}.${profile}.pid" | |
eval elasticsearch_config="\${elasticsearch_${profile}_config:-}" | |
if [ "x${elasticsearch_config}" = "x" ]; then | |
echo "You must define a configuration (elasticsearch_${profile}_config)" | |
exit 1 | |
fi | |
required_files="${elasticsearch_config}/elasticsearch.yml" | |
eval elasticsearch_enable="\${elasticsearch_${profile}_enable:-${elasticsearch_enable}}" | |
eval elasticsearch_props="\${elasticsearch_${profile}_props:-${elasticsearch_props}}" | |
eval elasticsearch_min_mem="\${elasticsearch_${profile}_min_mem:-${elasticsearch_min_mem}}" | |
eval elasticsearch_max_mem="\${elasticsearchlimits_${profile}_enable:-${elasticsearch_max_mem}}" | |
eval elasticsearch_tmp="\${elasticsearchlimits_${profile}_args:-${elasticsearch_tmp}}" | |
else | |
echo "$0: extra argument ignored" | |
fi | |
else | |
eval elasticsearch_envvars=${envvars} | |
if [ "x${elasticsearch_profiles}" != "x" -a "x$1" != "x" ]; then | |
for profile in ${elasticsearch_profiles}; do | |
eval _enable="\${elasticsearch_${profile}_enable}" | |
case "x${_enable:-${elasticsearch_enable}}" in | |
x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) | |
continue | |
;; | |
x[Yy][Ee][Ss]) | |
;; | |
*) | |
if test -z "$_enable"; then | |
_var=elasticsearch_enable | |
else | |
_var=elasticsearch_"${profile}"_enable | |
fi | |
echo "Bad value" \ | |
"'${_enable:-${elasticsearch_enable}}'" \ | |
"for ${_var}. " \ | |
"Profile ${profile} skipped." | |
continue | |
;; | |
esac | |
echo "===> elasticsearch profile: ${profile}" | |
/usr/local/etc/rc.d/elasticsearch $1 ${profile} | |
retcode="$?" | |
if [ "0${retcode}" -ne 0 ]; then | |
failed="${profile} (${retcode}) ${failed:-}" | |
else | |
success="${profile} ${success:-}" | |
fi | |
done | |
exit 0 | |
fi | |
fi | |
run_rc_command "$1" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment