46d6e00166
Change-Id: I46e8d9fd32c7745c313030da62da41486a77b3ea
124 lines
3.3 KiB
Bash
124 lines
3.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF 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.
|
|
|
|
## @description check install user
|
|
## @audience public
|
|
## @stability stable
|
|
function check_install_user()
|
|
{
|
|
if [[ $(id -u) -ne 0 ]];then
|
|
echo "This script must be run with a ROOT user!"
|
|
exit # don't call exit_install()
|
|
fi
|
|
}
|
|
|
|
## @description exit install
|
|
## @audience public
|
|
## @stability stable
|
|
function exit_install()
|
|
{
|
|
echo "Exit the installation!" | tee -a $LOG
|
|
exit $1
|
|
}
|
|
|
|
## @description Check if the IP address format is correct
|
|
## @audience public
|
|
## @stability stable
|
|
function valid_ip()
|
|
{
|
|
local ip=$1
|
|
local stat=1
|
|
|
|
if [[ $ip =~ ^[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}$ ]]; then
|
|
OIFS=$IFS
|
|
IFS='.'
|
|
ip=($ip)
|
|
IFS=$OIFS
|
|
|
|
if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
|
|
stat=$?
|
|
fi
|
|
fi
|
|
|
|
return $stat
|
|
}
|
|
|
|
## @description Check if the configuration file configuration is correct
|
|
## @audience public
|
|
## @stability stable
|
|
function check_install_conf()
|
|
{
|
|
echo "Check if the configuration file configuration is correct ..." | tee -a $LOG
|
|
|
|
# check etcd conf
|
|
hostCount=${#ETCD_HOSTS[@]}
|
|
if [[ $hostCount -lt 3 && hostCount -ne 0 ]]; then # <>2
|
|
echo "Number of nodes = [$hostCount], must be configured to be greater than or equal to 3 servers! " | tee -a $LOG
|
|
exit_install
|
|
fi
|
|
for ip in ${ETCD_HOSTS[@]}
|
|
do
|
|
if ! valid_ip $ip; then
|
|
echo "]ETCD_HOSTS=[$ip], IP address format is incorrect! " | tee -a $LOG
|
|
exit_install
|
|
fi
|
|
done
|
|
echo "Check if the configuration file configuration is correct [ Done ]" | tee -a $LOG
|
|
}
|
|
|
|
## @description index by EtcdHosts list
|
|
## @audience public
|
|
## @stability stable
|
|
function indexByEtcdHosts() {
|
|
index=0
|
|
while [ "$index" -lt "${#ETCD_HOSTS[@]}" ]; do
|
|
if [ "${ETCD_HOSTS[$index]}" = "$1" ]; then
|
|
echo $index
|
|
return
|
|
fi
|
|
let "index++"
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
## @description get local IP
|
|
## @audience public
|
|
## @stability stable
|
|
function getLocalIP()
|
|
{
|
|
local _ip _myip _line _nl=$'\n'
|
|
while IFS=$': \t' read -a _line ;do
|
|
[ -z "${_line%inet}" ] &&
|
|
_ip=${_line[${#_line[1]}>4?1:2]} &&
|
|
[ "${_ip#127.0.0.1}" ] && _myip=$_ip
|
|
done< <(LANG=C /sbin/ifconfig)
|
|
printf ${1+-v} $1 "%s${_nl:0:$[${#1}>0?0:1]}" $_myip
|
|
}
|
|
|
|
## @description get ip list
|
|
## @audience public
|
|
## @stability stable
|
|
function get_ip_list()
|
|
{
|
|
array=$(ifconfig | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2)
|
|
|
|
for ip in ${array[@]}
|
|
do
|
|
LOCAL_HOST_IP_LIST+=(${ip})
|
|
done
|
|
}
|