diff options
Diffstat (limited to 'src/rpm')
-rw-r--r-- | src/rpm/init.d/elasticsearch | 158 | ||||
-rw-r--r-- | src/rpm/scripts/postinstall | 50 | ||||
-rw-r--r-- | src/rpm/scripts/postremove | 15 | ||||
-rw-r--r-- | src/rpm/scripts/preinstall | 4 | ||||
-rw-r--r-- | src/rpm/scripts/preremove | 29 | ||||
-rw-r--r-- | src/rpm/sysconfig/elasticsearch | 46 | ||||
-rw-r--r-- | src/rpm/systemd/elasticsearch.conf | 1 | ||||
-rw-r--r-- | src/rpm/systemd/elasticsearch.service | 20 | ||||
-rw-r--r-- | src/rpm/systemd/sysctl.d/elasticsearch.conf | 1 |
9 files changed, 324 insertions, 0 deletions
diff --git a/src/rpm/init.d/elasticsearch b/src/rpm/init.d/elasticsearch new file mode 100644 index 0000000..a5ba651 --- /dev/null +++ b/src/rpm/init.d/elasticsearch @@ -0,0 +1,158 @@ +#!/bin/sh +# +# elasticsearch <summary> +# +# chkconfig: 2345 80 20 +# description: Starts and stops a single elasticsearch instance on this system +# + +### BEGIN INIT INFO +# Provides: Elasticsearch +# Required-Start: $network $named +# Required-Stop: $network $named +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: This service manages the elasticsearch daemon +# Description: Elasticsearch is a very scalable, schema-free and high-performance search solution supporting multi-tenancy and near realtime search. +### END INIT INFO + +# +# init.d / servicectl compatibility (openSUSE) +# +if [ -f /etc/rc.status ]; then + . /etc/rc.status + rc_reset +fi + +# +# Source function library. +# +if [ -f /etc/rc.d/init.d/functions ]; then + . /etc/rc.d/init.d/functions +fi + +exec="/usr/share/elasticsearch/bin/elasticsearch" +prog="elasticsearch" +pidfile=/var/run/elasticsearch/${prog}.pid + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +export ES_HEAP_SIZE +export ES_HEAP_NEWSIZE +export ES_DIRECT_SIZE +export ES_JAVA_OPTS + +lockfile=/var/lock/subsys/$prog + +# backwards compatibility for old config sysconfig files, pre 0.90.1 +if [ -n $USER ] && [ -z $ES_USER ] ; then + ES_USER=$USER +fi + +checkJava() { + if [ -x "$JAVA_HOME/bin/java" ]; then + JAVA="$JAVA_HOME/bin/java" + else + JAVA=`which java` + fi + + if [ ! -x "$JAVA" ]; then + echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME" + exit 1 + fi +} + +start() { + checkJava + [ -x $exec ] || exit 5 + [ -f $CONF_FILE ] || exit 6 + if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then + echo "MAX_LOCKED_MEMORY is set - ES_HEAP_SIZE must also be set" + return 7 + fi + if [ -n "$MAX_OPEN_FILES" ]; then + ulimit -n $MAX_OPEN_FILES + fi + if [ -n "$MAX_LOCKED_MEMORY" ]; then + ulimit -l $MAX_LOCKED_MEMORY + fi + if [ -n "$MAX_MAP_COUNT" ]; then + sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT + fi + if [ -n "$WORK_DIR" ]; then + mkdir -p "$WORK_DIR" + chown "$ES_USER":"$ES_GROUP" "$WORK_DIR" + fi + echo -n $"Starting $prog: " + # if not running, start it up here, usually something like "daemon $exec" + daemon --user $ES_USER --pidfile $pidfile $exec -p $pidfile -d -Des.default.path.home=$ES_HOME -Des.default.path.logs=$LOG_DIR -Des.default.path.data=$DATA_DIR -Des.default.path.work=$WORK_DIR -Des.default.path.conf=$CONF_DIR + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + # stop it here, often "killproc $prog" + killproc -p $pidfile -d 20 $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status -p $pidfile $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/src/rpm/scripts/postinstall b/src/rpm/scripts/postinstall new file mode 100644 index 0000000..317f7fe --- /dev/null +++ b/src/rpm/scripts/postinstall @@ -0,0 +1,50 @@ + +[ -f /etc/sysconfig/elasticsearch ] && . /etc/sysconfig/elasticsearch + +startElasticsearch() { + if [ -x /bin/systemctl ] ; then + /bin/systemctl start elasticsearch.service + elif [ -x /etc/init.d/elasticsearch ] ; then + /etc/init.d/elasticsearch start + # older suse linux distributions do not ship with systemd + # but do not have an /etc/init.d/ directory + # this tries to start elasticsearch on these as well without failing this script + elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then + /etc/rc.d/init.d/elasticsearch start + fi +} + +stopElasticsearch() { + if [ -x /bin/systemctl ] ; then + /bin/systemctl stop elasticsearch.service > /dev/null 2>&1 || : + elif [ -x /etc/init.d/elasticsearch ] ; then + /etc/init.d/elasticsearch stop + elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then + /etc/rc.d/init.d/elasticsearch stop + fi +} + +# Initial installation: $1 == 1 +# Upgrade: $1 == 2, and configured to restart on upgrade +if [ $1 -eq 1 ] ; then + + if [ -x /bin/systemctl ] ; then + echo "### NOT starting on installation, please execute the following statements to configure elasticsearch to start automatically using systemd" + echo " sudo /bin/systemctl daemon-reload" + echo " sudo /bin/systemctl enable elasticsearch.service" + echo "### You can start elasticsearch by executing" + echo " sudo /bin/systemctl start elasticsearch.service" + + + elif [ -x /sbin/chkconfig ] ; then + echo "### NOT starting on installation, please execute the following statements to configure elasticsearch to start automatically using chkconfig" + echo " sudo /sbin/chkconfig --add elasticsearch" + echo "### You can start elasticsearch by executing" + echo " sudo service elasticsearch start" + fi + +elif [ $1 -ge 2 -a "$RESTART_ON_UPGRADE" == "true" ] ; then + stopElasticsearch + startElasticsearch +fi + diff --git a/src/rpm/scripts/postremove b/src/rpm/scripts/postremove new file mode 100644 index 0000000..6dedc29 --- /dev/null +++ b/src/rpm/scripts/postremove @@ -0,0 +1,15 @@ +# only execute in case of package removal, not on upgrade +if [ $1 -eq 0 ] ; then + + getent passwd elasticsearch > /dev/null + if [ "$?" == "0" ] ; then + userdel elasticsearch + fi + + getent group elasticsearch >/dev/null + if [ "$?" == "0" ] ; then + groupdel elasticsearch + fi +fi + +exit diff --git a/src/rpm/scripts/preinstall b/src/rpm/scripts/preinstall new file mode 100644 index 0000000..327c8d6 --- /dev/null +++ b/src/rpm/scripts/preinstall @@ -0,0 +1,4 @@ +getent group elasticsearch >/dev/null || groupadd -r elasticsearch +getent passwd elasticsearch >/dev/null || \ + useradd -r -g elasticsearch -d /usr/share/elasticsearch -s /sbin/nologin \ + -c "elasticsearch user" elasticsearch diff --git a/src/rpm/scripts/preremove b/src/rpm/scripts/preremove new file mode 100644 index 0000000..1627c19 --- /dev/null +++ b/src/rpm/scripts/preremove @@ -0,0 +1,29 @@ + +[ -f /etc/sysconfig/elasticsearch ] && . /etc/sysconfig/elasticsearch + +stopElasticsearch() { + if [ -x /bin/systemctl ] ; then + /bin/systemctl stop elasticsearch.service > /dev/null 2>&1 || : + elif [ -x /etc/init.d/elasticsearch ] ; then + /etc/init.d/elasticsearch stop + elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then + /etc/rc.d/init.d/elasticsearch stop + fi +} + +# Removal: $1 == 0 +# Dont do anything on upgrade, because the preun script in redhat gets executed after the postinst (madness!) +if [ $1 -eq 0 ] ; then + + if [ -x /bin/systemctl ] ; then + /bin/systemctl --no-reload disable elasticsearch.service > /dev/null 2>&1 || : + fi + + if [ -x /sbin/chkconfig ] ; then + /sbin/chkconfig --del elasticsearch 2> /dev/null + fi + + stopElasticsearch +fi + +exit 0 diff --git a/src/rpm/sysconfig/elasticsearch b/src/rpm/sysconfig/elasticsearch new file mode 100644 index 0000000..f27c497 --- /dev/null +++ b/src/rpm/sysconfig/elasticsearch @@ -0,0 +1,46 @@ +# Directory where the Elasticsearch binary distribution resides +ES_HOME=/usr/share/elasticsearch + +# Heap Size (defaults to 256m min, 1g max) +#ES_HEAP_SIZE=2g + +# Heap new generation +#ES_HEAP_NEWSIZE= + +# max direct memory +#ES_DIRECT_SIZE= + +# Additional Java OPTS +#ES_JAVA_OPTS= + +# Maximum number of open files +MAX_OPEN_FILES=65535 + +# Maximum amount of locked memory +#MAX_LOCKED_MEMORY= + +# Maximum number of VMA (Virtual Memory Areas) a process can own +MAX_MAP_COUNT=262144 + +# Elasticsearch log directory +LOG_DIR=/var/log/elasticsearch + +# Elasticsearch data directory +DATA_DIR=/var/lib/elasticsearch + +# Elasticsearch work directory +WORK_DIR=/tmp/elasticsearch + +# Elasticsearch conf directory +CONF_DIR=/etc/elasticsearch + +# Elasticsearch configuration file (elasticsearch.yml) +CONF_FILE=/etc/elasticsearch/elasticsearch.yml + +# User to run as, change this to a specific elasticsearch user if possible +# Also make sure, this user can write into the log directories in case you change them +# This setting only works for the init script, but has to be configured separately for systemd startup +ES_USER=elasticsearch + +# Configure restart on package upgrade (true, every other setting will lead to not restarting) +#RESTART_ON_UPGRADE=true diff --git a/src/rpm/systemd/elasticsearch.conf b/src/rpm/systemd/elasticsearch.conf new file mode 100644 index 0000000..9db225e --- /dev/null +++ b/src/rpm/systemd/elasticsearch.conf @@ -0,0 +1 @@ +d /run/elasticsearch 0755 elasticsearch elasticsearch - - diff --git a/src/rpm/systemd/elasticsearch.service b/src/rpm/systemd/elasticsearch.service new file mode 100644 index 0000000..5642018 --- /dev/null +++ b/src/rpm/systemd/elasticsearch.service @@ -0,0 +1,20 @@ +[Unit] +Description=Starts and stops a single elasticsearch instance on this system +Documentation=http://www.elasticsearch.org + +[Service] +Type=forking +EnvironmentFile=/etc/sysconfig/elasticsearch +User=elasticsearch +Group=elasticsearch +PIDFile=/var/run/elasticsearch/elasticsearch.pid +ExecStart=/usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch/elasticsearch.pid -Des.default.config=$CONF_FILE -Des.default.path.home=$ES_HOME -Des.default.path.logs=$LOG_DIR -Des.default.path.data=$DATA_DIR -Des.default.path.work=$WORK_DIR -Des.default.path.conf=$CONF_DIR +# See MAX_OPEN_FILES in sysconfig +LimitNOFILE=65535 +# See MAX_LOCKED_MEMORY in sysconfig, use "infinity" when MAX_LOCKED_MEMORY=unlimited and using bootstrap.mlockall: true +#LimitMEMLOCK=infinity +# Shutdown delay in seconds, before process is tried to be killed with KILL (if configured) +TimeoutStopSec=20 + +[Install] +WantedBy=multi-user.target diff --git a/src/rpm/systemd/sysctl.d/elasticsearch.conf b/src/rpm/systemd/sysctl.d/elasticsearch.conf new file mode 100644 index 0000000..62ea54d --- /dev/null +++ b/src/rpm/systemd/sysctl.d/elasticsearch.conf @@ -0,0 +1 @@ +vm.max_map_count=262144 |