111 lines
4.3 KiB
Bash
111 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
# This file contains some utilities to test the elasticsearch
|
|
# tar distribution.
|
|
|
|
# WARNING: This testing file must be executed as root and can
|
|
# dramatically change your system. It should only be executed
|
|
# in a throw-away VM like those made by the Vagrantfile at
|
|
# the root of the Elasticsearch source code. This should
|
|
# cause the script to fail if it is executed any other way:
|
|
[ -f /etc/is_vagrant_vm ] || {
|
|
>&2 echo "must be run on a vagrant VM"
|
|
exit 1
|
|
}
|
|
|
|
# Licensed to Elasticsearch under one or more contributor
|
|
# license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright
|
|
# ownership. Elasticsearch licenses this file to you under
|
|
# the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
# Install the tar.gz archive
|
|
install_archive() {
|
|
export ESHOME=${1:-/tmp/elasticsearch}
|
|
|
|
local version=$(cat version)
|
|
|
|
echo "Unpacking tarball to $ESHOME"
|
|
rm -rf /tmp/untar
|
|
mkdir -p /tmp/untar
|
|
tar -xzpf "${PACKAGE_NAME}-${version}-linux-x86_64.tar.gz" -C /tmp/untar
|
|
|
|
find /tmp/untar -depth -type d -name 'elasticsearch*' -exec mv {} "$ESHOME" \; > /dev/null
|
|
|
|
# ES cannot run as root so create elasticsearch user & group if needed
|
|
if ! getent group "elasticsearch" > /dev/null 2>&1 ; then
|
|
if is_dpkg; then
|
|
addgroup --system "elasticsearch"
|
|
else
|
|
groupadd -r "elasticsearch"
|
|
fi
|
|
fi
|
|
if ! id "elasticsearch" > /dev/null 2>&1 ; then
|
|
if is_dpkg; then
|
|
adduser --quiet --system --no-create-home --ingroup "elasticsearch" --disabled-password --shell /bin/false "elasticsearch"
|
|
else
|
|
useradd --system -M --gid "elasticsearch" --shell /sbin/nologin --comment "elasticsearch user" "elasticsearch"
|
|
fi
|
|
fi
|
|
|
|
chown -R elasticsearch:elasticsearch "$ESHOME"
|
|
export_elasticsearch_paths
|
|
}
|
|
|
|
# Move the unzipped tarball to another location.
|
|
move_elasticsearch() {
|
|
local oldhome="$ESHOME"
|
|
export ESHOME="$1"
|
|
rm -rf "$ESHOME"
|
|
mv "$oldhome" "$ESHOME"
|
|
export_elasticsearch_paths
|
|
}
|
|
|
|
# Export some useful paths.
|
|
export_elasticsearch_paths() {
|
|
export ESMODULES="$ESHOME/modules"
|
|
export ESPLUGINS="$ESHOME/plugins"
|
|
export ESCONFIG="$ESHOME/config"
|
|
export ESSCRIPTS="$ESCONFIG/scripts"
|
|
export ESDATA="$ESHOME/data"
|
|
export ESLOG="$ESHOME/logs"
|
|
|
|
export PACKAGE_NAME=${PACKAGE_NAME:-"elasticsearch-oss"}
|
|
}
|
|
|
|
# Checks that all directories & files are correctly installed
|
|
# after a archive (tar.gz/zip) install
|
|
verify_archive_installation() {
|
|
assert_file "$ESHOME" d elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin" d elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch" f elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch-env" f elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch-keystore" f elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch-plugin" f elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch-shard" f elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/bin/elasticsearch-node" f elasticsearch elasticsearch 755
|
|
assert_file "$ESCONFIG" d elasticsearch elasticsearch 755
|
|
assert_file "$ESCONFIG/elasticsearch.yml" f elasticsearch elasticsearch 660
|
|
assert_file "$ESCONFIG/jvm.options" f elasticsearch elasticsearch 660
|
|
assert_file "$ESCONFIG/log4j2.properties" f elasticsearch elasticsearch 660
|
|
assert_file "$ESPLUGINS" d elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/lib" d elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/logs" d elasticsearch elasticsearch 755
|
|
assert_file "$ESHOME/NOTICE.txt" f elasticsearch elasticsearch 644
|
|
assert_file "$ESHOME/LICENSE.txt" f elasticsearch elasticsearch 644
|
|
assert_file "$ESHOME/README.asciidoc" f elasticsearch elasticsearch 644
|
|
assert_file_not_exist "$ESCONFIG/elasticsearch.keystore"
|
|
}
|