19eefe5e61
On some slow system with recent version of Elasticsearch we saw that the service becomes ready after more than 1 minute. Change-Id: Id2b21ab24a96d10fffdcccd652a7d3ec4e8ce39c
149 lines
4.4 KiB
Bash
Executable File
149 lines
4.4 KiB
Bash
Executable File
#!/bin/bash -xe
|
|
|
|
# basic reference point for things like filecache
|
|
#
|
|
# TODO(sdague): once we have a few of these I imagine the download
|
|
# step can probably be factored out to something nicer
|
|
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
|
|
FILES=$TOP_DIR/files
|
|
source $TOP_DIR/stackrc
|
|
|
|
# Package source and version, all pkg files are expected to have
|
|
# something like this, as well as a way to override them.
|
|
ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION:-1.7.5}
|
|
ELASTICSEARCH_BASEURL=${ELASTICSEARCH_BASEURL:-https://download.elasticsearch.org/elasticsearch/elasticsearch}
|
|
|
|
# Elastic search actual implementation
|
|
function wget_elasticsearch {
|
|
local file=${1}
|
|
|
|
if [ ! -f ${FILES}/${file} ]; then
|
|
wget $ELASTICSEARCH_BASEURL/${file} -O ${FILES}/${file}
|
|
fi
|
|
|
|
if [ ! -f ${FILES}/${file}.sha1.txt ]; then
|
|
wget $ELASTICSEARCH_BASEURL/${file}.sha1.txt -O ${FILES}/${file}.sha1.txt
|
|
fi
|
|
|
|
pushd ${FILES}; sha1sum ${file} > ${file}.sha1.gen; popd
|
|
|
|
if ! diff ${FILES}/${file}.sha1.gen ${FILES}/${file}.sha1.txt; then
|
|
echo "Invalid elasticsearch download. Could not install."
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
function download_elasticsearch {
|
|
if is_ubuntu; then
|
|
wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.deb
|
|
elif is_fedora || is_suse; then
|
|
wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
|
|
fi
|
|
}
|
|
|
|
function configure_elasticsearch {
|
|
# currently a no op
|
|
:
|
|
}
|
|
|
|
function _check_elasticsearch_ready {
|
|
# poll elasticsearch to see if it's started
|
|
if ! wait_for_service 120 http://localhost:9200; then
|
|
die $LINENO "Maximum timeout reached. Could not connect to ElasticSearch"
|
|
fi
|
|
}
|
|
|
|
function start_elasticsearch {
|
|
if is_ubuntu; then
|
|
sudo /etc/init.d/elasticsearch start
|
|
_check_elasticsearch_ready
|
|
elif is_fedora; then
|
|
sudo /bin/systemctl start elasticsearch.service
|
|
_check_elasticsearch_ready
|
|
elif is_suse; then
|
|
sudo /usr/bin/systemctl start elasticsearch.service
|
|
_check_elasticsearch_ready
|
|
else
|
|
echo "Unsupported architecture...can not start elasticsearch."
|
|
fi
|
|
}
|
|
|
|
function stop_elasticsearch {
|
|
if is_ubuntu; then
|
|
sudo /etc/init.d/elasticsearch stop
|
|
elif is_fedora; then
|
|
sudo /bin/systemctl stop elasticsearch.service
|
|
elif is_suse ; then
|
|
sudo /usr/bin/systemctl stop elasticsearch.service
|
|
else
|
|
echo "Unsupported architecture...can not stop elasticsearch."
|
|
fi
|
|
}
|
|
|
|
function install_elasticsearch {
|
|
pip_install_gr elasticsearch
|
|
if is_package_installed elasticsearch; then
|
|
echo "Note: elasticsearch was already installed."
|
|
return
|
|
fi
|
|
if is_ubuntu; then
|
|
is_package_installed default-jre-headless || install_package default-jre-headless
|
|
|
|
sudo dpkg -i ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.deb
|
|
sudo update-rc.d elasticsearch defaults 95 10
|
|
elif is_fedora; then
|
|
is_package_installed java-1.8.0-openjdk-headless || install_package java-1.8.0-openjdk-headless
|
|
yum_install ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
|
|
sudo /bin/systemctl daemon-reload
|
|
sudo /bin/systemctl enable elasticsearch.service
|
|
elif is_suse; then
|
|
is_package_installed java-1_8_0-openjdk-headless || install_package java-1_8_0-openjdk-headless
|
|
zypper_install --no-gpg-checks ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
|
|
sudo /usr/bin/systemctl daemon-reload
|
|
sudo /usr/bin/systemctl enable elasticsearch.service
|
|
else
|
|
echo "Unsupported install of elasticsearch on this architecture."
|
|
fi
|
|
}
|
|
|
|
function uninstall_elasticsearch {
|
|
if is_package_installed elasticsearch; then
|
|
if is_ubuntu; then
|
|
sudo apt-get purge elasticsearch
|
|
elif is_fedora; then
|
|
sudo yum remove elasticsearch
|
|
elif is_suse; then
|
|
sudo zypper rm elasticsearch
|
|
else
|
|
echo "Unsupported install of elasticsearch on this architecture."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# The PHASE dispatcher. All pkg files are expected to basically cargo
|
|
# cult the case statement.
|
|
PHASE=$1
|
|
echo "Phase is $PHASE"
|
|
|
|
case $PHASE in
|
|
download)
|
|
download_elasticsearch
|
|
;;
|
|
install)
|
|
install_elasticsearch
|
|
;;
|
|
configure)
|
|
configure_elasticsearch
|
|
;;
|
|
start)
|
|
start_elasticsearch
|
|
;;
|
|
stop)
|
|
stop_elasticsearch
|
|
;;
|
|
uninstall)
|
|
uninstall_elasticsearch
|
|
;;
|
|
esac
|