46d6e00166
Change-Id: I46e8d9fd32c7745c313030da62da41486a77b3ea
153 lines
4.4 KiB
Bash
153 lines
4.4 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 download etcd bin
|
|
## @audience public
|
|
## @stability stable
|
|
function download_etcd_bin()
|
|
{
|
|
# my download http server
|
|
if [[ -n "$DOWNLOAD_HTTP" ]]; then
|
|
MY_ETCD_DOWNLOAD_URL="${DOWNLOAD_HTTP}/downloads/etcd/${ETCD_TAR_GZ}"
|
|
else
|
|
MY_ETCD_DOWNLOAD_URL=${ETCD_DOWNLOAD_URL}
|
|
fi
|
|
|
|
if [[ -f "${DOWNLOAD_DIR}/etcd/${ETCD_TAR_GZ}" ]]; then
|
|
echo "${DOWNLOAD_DIR}/etcd/${ETCD_TAR_GZ} is exist."
|
|
else
|
|
echo "download ${MY_ETCD_DOWNLOAD_URL} ..."
|
|
wget -P ${DOWNLOAD_DIR}/etcd ${MY_ETCD_DOWNLOAD_URL}
|
|
fi
|
|
}
|
|
|
|
## @description install etcd bin
|
|
## @audience public
|
|
## @stability stable
|
|
function install_etcd_bin()
|
|
{
|
|
download_etcd_bin
|
|
|
|
# install etcd bin
|
|
mkdir -p ${INSTALL_TEMP_DIR}
|
|
rm -rf ${INSTALL_TEMP_DIR}/etcd-*-linux-amd6
|
|
tar zxvf ${DOWNLOAD_DIR}/etcd/${ETCD_TAR_GZ} -C ${INSTALL_TEMP_DIR}
|
|
|
|
cp -f ${INSTALL_TEMP_DIR}/etcd-*-linux-amd64/etcd /usr/bin
|
|
cp -f ${INSTALL_TEMP_DIR}/etcd-*-linux-amd64/etcdctl /usr/bin
|
|
|
|
mkdir -p /var/lib/etcd
|
|
chmod -R a+rw /var/lib/etcd
|
|
}
|
|
|
|
## @description install etcd config
|
|
## @audience public
|
|
## @stability stable
|
|
function install_etcd_config()
|
|
{
|
|
# config etcd.service
|
|
rm -rf ${INSTALL_TEMP_DIR}/etcd
|
|
cp -rf ${PACKAGE_DIR}/etcd ${INSTALL_TEMP_DIR}/
|
|
|
|
# 1. Replace name with ETCD_NODE_NAME_REPLACE based on the location of the local IP in $ETCD_HOSTS
|
|
indexEtcdList=$(indexByEtcdHosts ${LOCAL_HOST_IP})
|
|
# echo ${indexEtcdList}
|
|
etcdNodeName="etcdnode${indexEtcdList}"
|
|
# echo ${etcdNodeName}
|
|
sed -i "s/ETCD_NODE_NAME_REPLACE/${etcdNodeName}/g" $INSTALL_TEMP_DIR/etcd/etcd.service >>$LOG
|
|
|
|
# 2. Replace local IP address
|
|
sed -i "s/LOCAL_HOST_REPLACE/${LOCAL_HOST_IP}/g" $INSTALL_TEMP_DIR/etcd/etcd.service >>$LOG
|
|
|
|
# 3. Replace the initial-cluster parameter
|
|
# --initial-cluster=etcdnode1=http://10.196.69.173:2380,etcdnode2=http://10.196.69.174:2380,etcdnode3=http://10.196.69.175:2380 \
|
|
initialCluster=''
|
|
index=0
|
|
etcdHostsSize=${#ETCD_HOSTS[@]}
|
|
for item in ${ETCD_HOSTS[@]}
|
|
do
|
|
# char '/' need to escape '\/'
|
|
initialCluster="${initialCluster}etcdnode${index}=http:\/\/${item}:2380"
|
|
if [[ ${index} -lt ${etcdHostsSize}-1 ]]; then
|
|
initialCluster=${initialCluster}","
|
|
fi
|
|
index=$(($index+1))
|
|
done
|
|
#echo "initialCluster=${initialCluster}"
|
|
sed -i "s/INITIAL_CLUSTER_REPLACE/${initialCluster}/g" $INSTALL_TEMP_DIR/etcd/etcd.service >>$LOG
|
|
|
|
cp $INSTALL_TEMP_DIR/etcd/etcd.service /etc/systemd/system/ >>$LOG
|
|
}
|
|
|
|
## @description install etcd
|
|
## @audience public
|
|
## @stability stable
|
|
function install_etcd()
|
|
{
|
|
index=$(indexByEtcdHosts ${LOCAL_HOST_IP})
|
|
if [ -z "$index" ]; then
|
|
echo -e "STOP: This host\033[31m[${LOCAL_HOST_IP}]\033[0m is not in the ETCD server list\033[31m[${ETCD_HOSTS[@]}]\033[0m"
|
|
return 1
|
|
fi
|
|
|
|
install_etcd_bin
|
|
|
|
install_etcd_config
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable etcd.service
|
|
}
|
|
|
|
## @description uninstall etcd
|
|
## @audience public
|
|
## @stability stable
|
|
function uninstall_etcd()
|
|
{
|
|
echo "stop etcd.service"
|
|
systemctl stop etcd.service
|
|
|
|
echo "rm etcd ..."
|
|
rm /usr/bin/etcd
|
|
rm /usr/bin/etcdctl
|
|
rm -rf /var/lib/etcd
|
|
rm /etc/systemd/system/etcd.service
|
|
|
|
systemctl daemon-reload
|
|
}
|
|
|
|
## @description start etcd
|
|
## @audience public
|
|
## @stability stable
|
|
function start_etcd()
|
|
{
|
|
systemctl restart etcd.service
|
|
|
|
echo " ===== Check the status of the etcd service ====="
|
|
echo " exec etcdctl cluster-health"
|
|
etcdctl cluster-health
|
|
echo " exec etcdctl cluster-health"
|
|
etcdctl member list
|
|
}
|
|
|
|
## @description stop etcd
|
|
## @audience public
|
|
## @stability stable
|
|
function stop_etcd()
|
|
{
|
|
systemctl stop etcd.service
|
|
}
|