71 lines
2.3 KiB
Bash
71 lines
2.3 KiB
Bash
|
#! /bin/bash
|
||
|
|
||
|
# Copyright 2016 The Kubernetes Authors.
|
||
|
#
|
||
|
# Licensed 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.
|
||
|
|
||
|
# This volume is assumed to exist and is shared with parent of the init
|
||
|
# container. It contains the zookeeper installation.
|
||
|
INSTALL_VOLUME="/opt"
|
||
|
|
||
|
# This volume is assumed to exist and is shared with the peer-finder
|
||
|
# init container. It contains on-start/change configuration scripts.
|
||
|
WORKDIR_VOLUME="/work-dir"
|
||
|
|
||
|
# As of April-2016 is 3.4.8 is the latest stable, but versions 3.5.0 onward
|
||
|
# allow dynamic reconfiguration.
|
||
|
VERSION="3.5.0-alpha"
|
||
|
|
||
|
for i in "$@"
|
||
|
do
|
||
|
case $i in
|
||
|
-i=*|--install-into=*)
|
||
|
INSTALL_VOLUME="${i#*=}"
|
||
|
shift
|
||
|
;;
|
||
|
-w=*|--work-dir=*)
|
||
|
WORKDIR_VOLUME="${i#*=}"
|
||
|
shift
|
||
|
;;
|
||
|
*)
|
||
|
# unknown option
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
echo installing config scripts into "${WORKDIR_VOLUME}"
|
||
|
mkdir -p "${WORKDIR_VOLUME}"
|
||
|
cp /on-start.sh "${WORKDIR_VOLUME}"/
|
||
|
cp /peer-finder "${WORKDIR_VOLUME}"/
|
||
|
|
||
|
echo installing zookeeper-"${VERSION}" into "${INSTALL_VOLUME}"
|
||
|
mkdir -p "${INSTALL_VOLUME}"
|
||
|
mv /zookeeper "${INSTALL_VOLUME}"/zookeeper
|
||
|
cp "${INSTALL_VOLUME}"/zookeeper/conf/zoo_sample.cfg "${INSTALL_VOLUME}"/zookeeper/conf/zoo.cfg
|
||
|
|
||
|
# TODO: Should dynamic config be tied to the version?
|
||
|
IFS="." read -ra RELEASE <<< "${VERSION}"
|
||
|
if [ $(expr "${RELEASE[1]}") -gt 4 ]; then
|
||
|
echo zookeeper-"${VERSION}" supports dynamic reconfiguration, enabling it
|
||
|
echo "standaloneEnabled=false" >> "${INSTALL_VOLUME}"/zookeeper/conf/zoo.cfg
|
||
|
echo "dynamicConfigFile="${INSTALL_VOLUME}"/zookeeper/conf/zoo.cfg.dynamic" >> "${INSTALL_VOLUME}"/zookeeper/conf/zoo.cfg
|
||
|
fi
|
||
|
|
||
|
# TODO: This is a hack, netcat is convenient to have in the zookeeper container
|
||
|
# I want to avoid using a custom zookeeper image just for this. So copy it.
|
||
|
NC=$(which nc)
|
||
|
if [ "${NC}" != "" ]; then
|
||
|
echo copying nc into "${INSTALL_VOLUME}"
|
||
|
cp "${NC}" "${INSTALL_VOLUME}"
|
||
|
fi
|