123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #!/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
- }
|