blob: bd4415315fb74e56473da3d719595eb2ba6b0026 [file] [log] [blame]
Sean Daguef8b4f852015-02-04 15:46:03 -05001#!/bin/bash -xe
2
3# basic reference point for things like filecache
4#
5# TODO(sdague): once we have a few of these I imagine the download
6# step can probably be factored out to something nicer
7TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
8FILES=$TOP_DIR/files
gordon chungb203d0c2015-08-12 11:58:11 -04009source $TOP_DIR/stackrc
Sean Daguef8b4f852015-02-04 15:46:03 -050010
11# Package source and version, all pkg files are expected to have
12# something like this, as well as a way to override them.
Travis Trippb523f312016-05-05 10:19:53 -060013ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION:-1.7.5}
Sean Daguef8b4f852015-02-04 15:46:03 -050014ELASTICSEARCH_BASEURL=${ELASTICSEARCH_BASEURL:-https://download.elasticsearch.org/elasticsearch/elasticsearch}
15
16# Elastic search actual implementation
17function wget_elasticsearch {
18 local file=${1}
19
20 if [ ! -f ${FILES}/${file} ]; then
21 wget $ELASTICSEARCH_BASEURL/${file} -O ${FILES}/${file}
22 fi
23
24 if [ ! -f ${FILES}/${file}.sha1.txt ]; then
25 wget $ELASTICSEARCH_BASEURL/${file}.sha1.txt -O ${FILES}/${file}.sha1.txt
26 fi
27
28 pushd ${FILES}; sha1sum ${file} > ${file}.sha1.gen; popd
29
30 if ! diff ${FILES}/${file}.sha1.gen ${FILES}/${file}.sha1.txt; then
31 echo "Invalid elasticsearch download. Could not install."
32 return 1
33 fi
34 return 0
35}
36
37function download_elasticsearch {
38 if is_ubuntu; then
39 wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.deb
Sumit Jamgade53e9aca2018-06-13 17:30:41 +020040 elif is_fedora || is_suse; then
Sean Daguef8b4f852015-02-04 15:46:03 -050041 wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
42 fi
43}
44
45function configure_elasticsearch {
46 # currently a no op
Attila Fazekas99b59882015-02-24 12:15:21 +010047 :
Sean Daguef8b4f852015-02-04 15:46:03 -050048}
49
gordon chung76e724b2015-02-11 18:28:37 -050050function _check_elasticsearch_ready {
51 # poll elasticsearch to see if it's started
Sylvain Afchain19eefe52018-07-04 17:59:34 +020052 if ! wait_for_service 120 http://localhost:9200; then
gordon chung76e724b2015-02-11 18:28:37 -050053 die $LINENO "Maximum timeout reached. Could not connect to ElasticSearch"
54 fi
55}
56
Sean Daguef8b4f852015-02-04 15:46:03 -050057function start_elasticsearch {
58 if is_ubuntu; then
59 sudo /etc/init.d/elasticsearch start
gordon chung76e724b2015-02-11 18:28:37 -050060 _check_elasticsearch_ready
Sean Daguef8b4f852015-02-04 15:46:03 -050061 elif is_fedora; then
62 sudo /bin/systemctl start elasticsearch.service
gordon chung76e724b2015-02-11 18:28:37 -050063 _check_elasticsearch_ready
Sumit Jamgade53e9aca2018-06-13 17:30:41 +020064 elif is_suse; then
65 sudo /usr/bin/systemctl start elasticsearch.service
66 _check_elasticsearch_ready
Sean Daguef8b4f852015-02-04 15:46:03 -050067 else
68 echo "Unsupported architecture...can not start elasticsearch."
69 fi
70}
71
72function stop_elasticsearch {
73 if is_ubuntu; then
74 sudo /etc/init.d/elasticsearch stop
75 elif is_fedora; then
76 sudo /bin/systemctl stop elasticsearch.service
Sumit Jamgade53e9aca2018-06-13 17:30:41 +020077 elif is_suse ; then
78 sudo /usr/bin/systemctl stop elasticsearch.service
Sean Daguef8b4f852015-02-04 15:46:03 -050079 else
80 echo "Unsupported architecture...can not stop elasticsearch."
81 fi
82}
83
84function install_elasticsearch {
Sean Dague60996b12015-04-08 09:06:49 -040085 pip_install_gr elasticsearch
Sean Daguef8b4f852015-02-04 15:46:03 -050086 if is_package_installed elasticsearch; then
87 echo "Note: elasticsearch was already installed."
88 return
89 fi
90 if is_ubuntu; then
Clark Boylana09cb5a2016-12-14 07:57:26 -080091 is_package_installed default-jre-headless || install_package default-jre-headless
Sean Daguef8b4f852015-02-04 15:46:03 -050092
93 sudo dpkg -i ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.deb
94 sudo update-rc.d elasticsearch defaults 95 10
95 elif is_fedora; then
Federico Ressi3809def2016-01-06 08:19:24 +000096 is_package_installed java-1.8.0-openjdk-headless || install_package java-1.8.0-openjdk-headless
Sean Daguef8b4f852015-02-04 15:46:03 -050097 yum_install ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
98 sudo /bin/systemctl daemon-reload
99 sudo /bin/systemctl enable elasticsearch.service
Sumit Jamgade53e9aca2018-06-13 17:30:41 +0200100 elif is_suse; then
101 is_package_installed java-1_8_0-openjdk-headless || install_package java-1_8_0-openjdk-headless
102 zypper_install --no-gpg-checks ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
103 sudo /usr/bin/systemctl daemon-reload
104 sudo /usr/bin/systemctl enable elasticsearch.service
Sean Daguef8b4f852015-02-04 15:46:03 -0500105 else
106 echo "Unsupported install of elasticsearch on this architecture."
107 fi
108}
109
110function uninstall_elasticsearch {
111 if is_package_installed elasticsearch; then
112 if is_ubuntu; then
113 sudo apt-get purge elasticsearch
114 elif is_fedora; then
115 sudo yum remove elasticsearch
Sumit Jamgade53e9aca2018-06-13 17:30:41 +0200116 elif is_suse; then
117 sudo zypper rm elasticsearch
Sean Daguef8b4f852015-02-04 15:46:03 -0500118 else
119 echo "Unsupported install of elasticsearch on this architecture."
120 fi
121 fi
122}
123
124# The PHASE dispatcher. All pkg files are expected to basically cargo
125# cult the case statement.
126PHASE=$1
127echo "Phase is $PHASE"
128
129case $PHASE in
130 download)
131 download_elasticsearch
132 ;;
133 install)
134 install_elasticsearch
135 ;;
136 configure)
137 configure_elasticsearch
138 ;;
139 start)
140 start_elasticsearch
141 ;;
142 stop)
143 stop_elasticsearch
144 ;;
145 uninstall)
146 uninstall_elasticsearch
147 ;;
148esac