blob: 239d6b938e6711cdc7ac2189b287cd7df4c2160e [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
9source $TOP_DIR/functions
10
11# Package source and version, all pkg files are expected to have
12# something like this, as well as a way to override them.
13ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION:-1.4.2}
14ELASTICSEARCH_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
40 elif is_fedora; then
41 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
52 if ! wait_for_service 30 http://localhost:9200; then
53 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
Sean Daguef8b4f852015-02-04 15:46:03 -050064 else
65 echo "Unsupported architecture...can not start elasticsearch."
66 fi
67}
68
69function stop_elasticsearch {
70 if is_ubuntu; then
71 sudo /etc/init.d/elasticsearch stop
72 elif is_fedora; then
73 sudo /bin/systemctl stop elasticsearch.service
74 else
75 echo "Unsupported architecture...can not stop elasticsearch."
76 fi
77}
78
79function install_elasticsearch {
80 if is_package_installed elasticsearch; then
81 echo "Note: elasticsearch was already installed."
82 return
83 fi
84 if is_ubuntu; then
85 is_package_installed openjdk-7-jre-headless || install_package openjdk-7-jre-headless
86
87 sudo dpkg -i ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.deb
88 sudo update-rc.d elasticsearch defaults 95 10
89 elif is_fedora; then
Attila Fazekas99b59882015-02-24 12:15:21 +010090 if [[ "$os_RELEASE" -ge "21" ]]; then
91 is_package_installed java-1.8.0-openjdk-headless || install_package java-1.8.0-openjdk-headless
92 else
93 is_package_installed java-1.7.0-openjdk-headless || install_package java-1.7.0-openjdk-headless
94 fi
Sean Daguef8b4f852015-02-04 15:46:03 -050095 yum_install ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
96 sudo /bin/systemctl daemon-reload
97 sudo /bin/systemctl enable elasticsearch.service
98 else
99 echo "Unsupported install of elasticsearch on this architecture."
100 fi
101}
102
103function uninstall_elasticsearch {
104 if is_package_installed elasticsearch; then
105 if is_ubuntu; then
106 sudo apt-get purge elasticsearch
107 elif is_fedora; then
108 sudo yum remove elasticsearch
109 else
110 echo "Unsupported install of elasticsearch on this architecture."
111 fi
112 fi
113}
114
115# The PHASE dispatcher. All pkg files are expected to basically cargo
116# cult the case statement.
117PHASE=$1
118echo "Phase is $PHASE"
119
120case $PHASE in
121 download)
122 download_elasticsearch
123 ;;
124 install)
125 install_elasticsearch
126 ;;
127 configure)
128 configure_elasticsearch
129 ;;
130 start)
131 start_elasticsearch
132 ;;
133 stop)
134 stop_elasticsearch
135 ;;
136 uninstall)
137 uninstall_elasticsearch
138 ;;
139esac