#!/bin/bash echo "Starting program.." # wait for pg startup echo "Checking cas postgres server health.." wait-for-it.sh postgres.cas:5432 -t 0 # wait for lb startup echo "Checking cas postgres server health.." wait-for-it.sh wisecloud.cas:5432 -t 0 # wait for redis startup echo "Checking redis server health.." wait-for-it.sh redis.redis:7000 -t 0 MODULE_HOME=/opt/wisecloud/cas/cas_server CAS_MAIN_CONF=${MODULE_HOME}/software/conf.ini LOG_DB=${MODULE_HOME}/software/utils/logsuite/logdb.conf SQL_FILE=${MODULE_HOME}/sql/setup.sql CAS_CLIENT_CONF=${MODULE_HOME}/software/utils/casclient/casclient.ini # replace the password of cas postgres sed -i "/^ *username =/s/.*/username = $POSTGRES_USER/g" $CAS_MAIN_CONF sed -i "/^ *password =/s/.*/password = $POSTGRES_PASSWORD/g" $CAS_MAIN_CONF # replace the redis password REDIS_PASSWORD=`curl http://rancher-metadata/latest/stacks/redis/services/redis/metadata/REDIS_PASSWORD` [ "$REDIS_PASSWORD" = "Not found" ] && unset REDIS_PASSWORD REDIS_PASSWORD=${REDIS_PASSWORD:-123456} sed -i "/password_redis/s/.*/password_redis = $REDIS_PASSWORD/g" $CAS_MAIN_CONF sed -i "/usrid/s/.*/usrid=$POSTGRES_USER/g" $LOG_DB sed -i "/passwd/s/.*/passwd=$POSTGRES_PASSWORD/g" $LOG_DB sed -i "/password/s/.*/password:$REDIS_PASSWORD/g" $CAS_CLIENT_CONF # copy the lib echo "copy the libs" yes | cp -rLfap ${MODULE_HOME}/software/utils/lib/* /usr/lib/ ln -s /usr/lib/libcas.so.1.1.4 /usr/lib/libcas.so ln -s /usr/lib/liblogsuite.so.1.1.6 /usr/lib/liblogsuite.so ldconfig # insert sql once if [ -f "${SQL_FILE}" ] then # get the env uuid env_uuid=`curl http://rancher-metadata/latest/self/host/environment_uuid` echo "the env uuid is: $env_uuid" # check env_data if ping -c3 google.com &>/dev/null; then domain_name=console.hk.svicloud.com:8080 # get the env name SVICLOUD_ACCESS_KEY=${SVICLOUD_ACCESS_KEY:-7F52BB62596A3D3A4C5E} SVICLOUD_SECRET_KEY=${SVICLOUD_SECRET_KEY:-pQcMx2trz7PhDwq7vC1oPUth1N6RobWsYUNv7JEm} else domain_name=console.svicloud.com:8090 # get the env name SVICLOUD_ACCESS_KEY=${SVICLOUD_ACCESS_KEY:-F2A3DB5C0FE1247EC6A4} SVICLOUD_SECRET_KEY=${SVICLOUD_SECRET_KEY:-AigNiQYKhPszMX5Jc79UfaCKsczY9owkX1v1cjVB} fi for ((m=0; m<=100; m++)); do env_data=`curl "http://$domain_name/v1/project" --user ${SVICLOUD_ACCESS_KEY}:${SVICLOUD_SECRET_KEY} \ -H "Upgrade-Insecure-Requests: 1" 2>/dev/null | jq .data` # echo -e "env_data:\n$env_data" if echo $env_data | grep -q name; then break else sleep 5 echo "retry to get project data $m times" continue fi if [ $m -ge 100 ]; then echo "failed to get project data" exit 1 fi done # another stupid method :) # # get the list count # env_data_list_count=`echo "$env_data" | jq '. | length'` # # loop to search the key # for ((m=0; m<=$[env_data_list_count - 1]; m++)); do # if echo "$env_data" | jq .[$m] | grep -wq $env_uuid; then # env_name=`echo "${env_data}" | jq .[$m].name | xargs` # break # fi # done env_name=`echo "$env_data" | jq ".[] | select(.uuid==\"$env_uuid\") | .name" | xargs` # print the env_name [ -z "$env_name" ] && { echo "error: can not get the env name"; exit 1 ; } || echo "env name: $env_name" # replace the sql file sed -i "s/{{TUNA}}/wisecloud.tuna.${env_name}.sviyun.com/" $SQL_FILE sed -i "s/{{AUTHCENTER}}/wisecloud.authcenter.${env_name}.sviyun.com/" $SQL_FILE sed -i "s/{{CAS}}/wisecloud.cas.${env_name}.sviyun.com/" $SQL_FILE sed -i "s/{{DCMP}}/wisecloud.dcmp.${env_name}.sviyun.com/" $SQL_FILE echo "replaced internat domain to internet domain in SQL_FILE" sleep 5 operator_updater=`psql -h wisecloud.cas -p 5432 "dbname=${POSTGRES_DB} user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" \ -tc "SELECT updater FROM operator where id='1';" | egrep -v "\-|value|\+" | xargs 2>/dev/null` echo "##### operator_updater=$operator_updater" if [ "${operator_updater}" != "admin" ]; then echo "Begin to create db ${POSTGRES_DB}.." psql -h wisecloud.cas -p 5432 "dbname=postgres user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" -c "CREATE DATABASE ${POSTGRES_DB}"; [ $? -eq 0 ] && echo "create db ${POSTGRES_DB} success" || echo "warning: create db ${POSTGRES_DB} failed, mybe the db already exist" echo "Begin to import sql file.." sleep 5 psql -h wisecloud.cas -p 5432 "dbname=${POSTGRES_DB} user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" -f ${SQL_FILE} [ $? -eq 0 ] && echo "import ${SQL_FILE} success" || { echo "import ${SQL_FILE} failed"; exit 1 ; } rm -rf ${SQL_FILE} fi fi # start cd ${MODULE_HOME}/software ./CAS --port=8822 [ $? -eq 0 ] && echo "Start success" || echo "Start failed"