108 lines
2.8 KiB
Bash
Executable File
108 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
CWD=$(cd `dirname $0`;pwd)
|
|
cd "${CWD}"
|
|
source _env
|
|
|
|
STAMP="$(date +%s)"
|
|
|
|
function is_true() {
|
|
value=$1
|
|
# convert value to upper case string(can work in bash 4.x)
|
|
value=${value^^}
|
|
|
|
if [ "x${value}" == "xNO" ] || [ "x${value}" == "xFALSE" ] || [ "x${value}" == "x0" ]; then
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# return 0 if mini_mode is nil or 'no'/'false'/0
|
|
# 0 means true and 1 for false in bash
|
|
function is_mini_mode() {
|
|
if test -z ${MINI_MODE}
|
|
then
|
|
return 1
|
|
fi
|
|
|
|
return `is_true ${MINI_MODE}`
|
|
}
|
|
|
|
function exit_while_error() {
|
|
if test -z ${EXIT_WHILE_ERROR}
|
|
then
|
|
return 0
|
|
fi
|
|
|
|
return `is_true ${EXIT_WHILE_ERROR}`
|
|
}
|
|
|
|
function remove_disk_check_logic_in_obd() {
|
|
# make sure obd copy the plugin code
|
|
obd cluster list
|
|
start_check_files=('/root/.obd/plugins/oceanbase/3.1.0/start_check.py' '/root/.obd/plugins/oceanbase/4.0.0.0/start_check.py')
|
|
for start_check_file in ${start_check_files[@]}
|
|
do
|
|
sed -i "s/critical('(%s) %s not enough disk space\. (Avail/alert('(%s) %s not enough disk space\. (Avail/g" $start_check_file
|
|
sed -i "s/critical(EC_OBSERVER_NOT_ENOUGH_DISK_4_CLOG/alert(EC_OBSERVER_NOT_ENOUGH_DISK_4_CLOG/g" $start_check_file
|
|
done
|
|
}
|
|
|
|
# We should decide whether the observer's data exists and
|
|
# whether the obd has the information of the cluster
|
|
|
|
if [ -f "$HOME/.obd/cluster/${OB_CLUSTER_NAME}/config.yaml" ]; then
|
|
echo "find obd deploy information, skip configuring..."
|
|
echo "start ob cluster ..."
|
|
obd cluster start $OB_CLUSTER_NAME
|
|
|
|
else # nothing here, bootstrap
|
|
|
|
echo "generate boot.yaml ..."
|
|
TMPFILE="boot.${STAMP}.yaml"
|
|
|
|
if is_mini_mode
|
|
then
|
|
echo "oceanbase-ce docker in mini mode"
|
|
cp -f boot-mini-tmp.yaml $TMPFILE
|
|
else
|
|
cp -f boot-tmp.yaml $TMPFILE
|
|
fi
|
|
|
|
cat obagent.yaml >> $TMPFILE
|
|
|
|
sed -i "s|@OB_HOME_PATH@|${OB_HOME_PATH}|g" $TMPFILE
|
|
sed -i "s|@OB_MYSQL_PORT@|${OB_MYSQL_PORT}|g" $TMPFILE
|
|
sed -i "s|@OB_RPC_PORT@|${OB_RPC_PORT}|g" $TMPFILE
|
|
sed -i "s|@OB_CLUSTER_NAME@|${OB_CLUSTER_NAME}|g" $TMPFILE
|
|
|
|
[ "${OB_DATA_DIR}" ] && echo " data_dir: ${OB_DATA_DIR}" >> $TMPFILE
|
|
[ "${OB_REDO_DIR}" ] && echo " redo_dir: ${OB_REDO_DIR}" >> $TMPFILE
|
|
echo "create boot dirs and deploy ob cluster ..."
|
|
mkdir -p $OB_HOME_PATH
|
|
|
|
obd mirror clone /root/pkg/*.rpm \
|
|
&& obd mirror list local
|
|
|
|
remove_disk_check_logic_in_obd
|
|
obd devmode enable \
|
|
&& obd cluster autodeploy "${OB_CLUSTER_NAME}" -c $TMPFILE \
|
|
&& obd cluster tenant create "${OB_CLUSTER_NAME}" -n ${OB_TENANT_NAME} \
|
|
&& obclient -h127.1 -uroot@${OB_TENANT_NAME} -A -P${OB_MYSQL_PORT} < init_tenant_user.sql \
|
|
&& mv -f $TMPFILE ${OB_HOME_PATH}/boot.yaml \
|
|
&& echo "deploy success!"
|
|
fi
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "boot success!"
|
|
else
|
|
echo "boot failed!"
|
|
if exit_while_error
|
|
then
|
|
exit 1
|
|
else
|
|
echo "Please check the log file ${OB_HOME_PATH}/log/observer.log"
|
|
fi
|
|
fi
|
|
exec tail -f /dev/null
|
|
|