start.sh 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #!/bin/bash
  2. echo "Starting program.."
  3. # wait for pg startup
  4. echo "Checking cas postgres server health.."
  5. wait-for-it.sh postgres.cas:5432 -t 0
  6. # wait for lb startup
  7. echo "Checking cas postgres server health.."
  8. wait-for-it.sh wisecloud.cas:5432 -t 0
  9. # wait for redis startup
  10. echo "Checking redis server health.."
  11. wait-for-it.sh redis.redis:7000 -t 0
  12. MODULE_HOME=/opt/wisecloud/cas/cas_server
  13. CAS_MAIN_CONF=${MODULE_HOME}/software/conf.ini
  14. LOG_DB=${MODULE_HOME}/software/utils/logsuite/logdb.conf
  15. SQL_FILE=${MODULE_HOME}/sql/setup.sql
  16. CAS_CLIENT_CONF=${MODULE_HOME}/software/utils/casclient/casclient.ini
  17. # replace the password of cas postgres
  18. sed -i "/^ *username =/s/.*/username = $POSTGRES_USER/g" $CAS_MAIN_CONF
  19. sed -i "/^ *password =/s/.*/password = $POSTGRES_PASSWORD/g" $CAS_MAIN_CONF
  20. # replace the redis password
  21. REDIS_PASSWORD=`curl http://rancher-metadata/latest/stacks/redis/services/redis/metadata/REDIS_PASSWORD`
  22. [ "$REDIS_PASSWORD" = "Not found" ] && unset REDIS_PASSWORD
  23. REDIS_PASSWORD=${REDIS_PASSWORD:-123456}
  24. sed -i "/password_redis/s/.*/password_redis = $REDIS_PASSWORD/g" $CAS_MAIN_CONF
  25. sed -i "/usrid/s/.*/usrid=$POSTGRES_USER/g" $LOG_DB
  26. sed -i "/passwd/s/.*/passwd=$POSTGRES_PASSWORD/g" $LOG_DB
  27. sed -i "/password/s/.*/password:$REDIS_PASSWORD/g" $CAS_CLIENT_CONF
  28. # copy the lib
  29. echo "copy the libs"
  30. yes | cp -rLfap ${MODULE_HOME}/software/utils/lib/* /usr/lib/
  31. ln -s /usr/lib/libcas.so.1.1.4 /usr/lib/libcas.so
  32. ln -s /usr/lib/liblogsuite.so.1.1.6 /usr/lib/liblogsuite.so
  33. ldconfig
  34. # insert sql once
  35. if [ -f "${SQL_FILE}" ]
  36. then
  37. # get the env uuid
  38. env_uuid=`curl http://rancher-metadata/latest/self/host/environment_uuid`
  39. echo "the env uuid is: $env_uuid"
  40. # check env_data
  41. if ping -c3 google.com &>/dev/null; then
  42. domain_name=console.hk.svicloud.com:8080
  43. # get the env name
  44. SVICLOUD_ACCESS_KEY=${SVICLOUD_ACCESS_KEY:-7F52BB62596A3D3A4C5E}
  45. SVICLOUD_SECRET_KEY=${SVICLOUD_SECRET_KEY:-pQcMx2trz7PhDwq7vC1oPUth1N6RobWsYUNv7JEm}
  46. else
  47. domain_name=console.svicloud.com:8090
  48. # get the env name
  49. SVICLOUD_ACCESS_KEY=${SVICLOUD_ACCESS_KEY:-F2A3DB5C0FE1247EC6A4}
  50. SVICLOUD_SECRET_KEY=${SVICLOUD_SECRET_KEY:-AigNiQYKhPszMX5Jc79UfaCKsczY9owkX1v1cjVB}
  51. fi
  52. for ((m=0; m<=100; m++)); do
  53. env_data=`curl "http://$domain_name/v1/project" --user ${SVICLOUD_ACCESS_KEY}:${SVICLOUD_SECRET_KEY} \
  54. -H "Upgrade-Insecure-Requests: 1" 2>/dev/null | jq .data`
  55. # echo -e "env_data:\n$env_data"
  56. if echo $env_data | grep -q name; then
  57. break
  58. else
  59. sleep 5
  60. echo "retry to get project data $m times"
  61. continue
  62. fi
  63. if [ $m -ge 100 ]; then
  64. echo "failed to get project data"
  65. exit 1
  66. fi
  67. done
  68. # another stupid method :)
  69. # # get the list count
  70. # env_data_list_count=`echo "$env_data" | jq '. | length'`
  71. # # loop to search the key
  72. # for ((m=0; m<=$[env_data_list_count - 1]; m++)); do
  73. # if echo "$env_data" | jq .[$m] | grep -wq $env_uuid; then
  74. # env_name=`echo "${env_data}" | jq .[$m].name | xargs`
  75. # break
  76. # fi
  77. # done
  78. env_name=`echo "$env_data" | jq ".[] | select(.uuid==\"$env_uuid\") | .name" | xargs`
  79. # print the env_name
  80. [ -z "$env_name" ] && { echo "error: can not get the env name"; exit 1 ; } || echo "env name: $env_name"
  81. # replace the sql file
  82. sed -i "s/{{TUNA}}/wisecloud.tuna.${env_name}.sviyun.com/" $SQL_FILE
  83. sed -i "s/{{AUTHCENTER}}/wisecloud.authcenter.${env_name}.sviyun.com/" $SQL_FILE
  84. sed -i "s/{{CAS}}/wisecloud.cas.${env_name}.sviyun.com/" $SQL_FILE
  85. sed -i "s/{{DCMP}}/wisecloud.dcmp.${env_name}.sviyun.com/" $SQL_FILE
  86. echo "replaced internat domain to internet domain in SQL_FILE"
  87. sleep 5
  88. operator_updater=`psql -h wisecloud.cas -p 5432 "dbname=${POSTGRES_DB} user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" \
  89. -tc "SELECT updater FROM operator where id='1';" | egrep -v "\-|value|\+" | xargs 2>/dev/null`
  90. echo "##### operator_updater=$operator_updater"
  91. if [ "${operator_updater}" != "admin" ]; then
  92. echo "Begin to create db ${POSTGRES_DB}.."
  93. psql -h wisecloud.cas -p 5432 "dbname=postgres user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" -c "CREATE DATABASE ${POSTGRES_DB}";
  94. [ $? -eq 0 ] && echo "create db ${POSTGRES_DB} success" || echo "warning: create db ${POSTGRES_DB} failed, mybe the db already exist"
  95. echo "Begin to import sql file.."
  96. sleep 5
  97. psql -h wisecloud.cas -p 5432 "dbname=${POSTGRES_DB} user=${POSTGRES_USER} password=${POSTGRES_PASSWORD}" -f ${SQL_FILE}
  98. [ $? -eq 0 ] && echo "import ${SQL_FILE} success" || { echo "import ${SQL_FILE} failed"; exit 1 ; }
  99. rm -rf ${SQL_FILE}
  100. fi
  101. fi
  102. # start
  103. cd ${MODULE_HOME}/software
  104. ./CAS --port=8822
  105. [ $? -eq 0 ] && echo "Start success" || echo "Start failed"