AutoMation
octet api token
#!/bin/bash Slack_URI1="https://hooks.slack.com/services/TCU73U2KC/B03U" Slack_URI2="https://hooks.slack.com/services/TCU73U2KC/B04GU: DOMAIN=https://dev.blockchainapi.pro env=dev REGION=ap-northeast-2 OT="dorian-service-${env}-secret_octet_api_key_app" # Octet 기존 Token 값 조회 echo "AWS SSM octet key loading" OCTET_API_KEY=$(aws ssm get-parameter --region ${REGION} --name "${OT}" --query "Parameter.Value" --with-decryption --output text) TOKEN_INFO=$(curl -X GET "${DOMAIN}/v1/user/tokeninfo" -H "Authorization: ${OCTET_API_KEY}" |jq -r '.formatDate') echo "After TOKEN Set Time = ${TOKEN_INFO}" sleep 3 # Octet 신규 Token 발급 및 교체 TOKEN_SET=v1/user/issue-token NEW_TOKEN=$(curl -X POST "${DOMAIN}/${TOKEN_SET}" -H "Authorization: ${OCTET_API_KEY}" | jq -r '.token') sleep 3 echo "PUT SSM octet token value" aws ssm put-parameter --region ${REGION} --name "${OT}" --value "${NEW_TOKEN}" --type "SecureString" --key-id "alias/dorian-service-${env}" --overwrite sleep 5 OT="dorian-service-${env}-secret_octet_api_key_app" OCTET_API_KEY=$(aws ssm get-parameter --region ${REGION} --name "${OT}" --query "Parameter.Value" --with-decryption --output text) NEW_TOKEN_INFO=$(curl -X GET "${DOMAIN}/v1/user/tokeninfo" -H "Authorization: ${OCTET_API_KEY}" |jq -r .formatDate) echo "New TOKEN Set Time = ${NEW_TOKEN_INFO}" SVC=service-${env}-an2-dorian-service-ecs-app aws ecs update-service --cluster dorian-service-${env} --service ${SVC} --task-definition task-${env}-an2-dorian-service-ecs-app --force-new-deployment --no-cli-pager sleep 5 #update-service 검증 COUNT=0 while [ $COUNT -lt 15 ] do STATUS=(`aws ecs describe-services --cluster dorian-service-${env} --services $SVC --no-cli-pager | jq -r '.services[].deployments[].status'`) ROLLOUTSTATE=(`aws ecs describe-services --cluster dorian-service-${env} --services $SVC --no-cli-pager | jq -r '.services[].deployments[].rolloutState'`) UPDATEDTIME=(`aws ecs describe-services --cluster dorian-service-${env} --services $SVC --no-cli-pager | jq -r '.services[].deployments[].updatedAt' | cut -d '.' -f 1`) echo ${UPDATEDTIME[0]} UTCTOKST=$(date +%Y-%m-%d\ %H:%M:%S -d "${UPDATEDTIME[0]} 9 hour") echo $UTCTOKST if [ ${STATUS[0]} == PRIMARY ] then if [ ${ROLLOUTSTATE[0]} == COMPLETED ] then MESSAGE=$(echo "재기동 완료 시간은 $UTCTOKST 입니다.") MSG_TEXT=" [ ${env} ]Octet API Token Change! Before Token Set Date : ${TOKEN_INFO} After Token Set Date : ${NEW_TOKEN_INFO} New Token Value : ${OCTET_API_KEY} 1. Octet API 토큰 업데이트 완료 2. ECS 서비스 업데이트 완료 -> ${MESSAGE} 서비스 점검 부탁 드립니다. " curl -X POST --data-urlencode "payload={\"channel\": \"#infra_monitoring\", \"username\": \"DevOpsBot\", \"text\": \"${MSG_TEXT}\" , \"icon_emoji\": \":sonic:\"}" $Slack_URI1 curl -X POST --data-urlencode "payload={\"channel\": \"#dorian-service-infra-monitoring-dev-stg\", \"username\": \"DevOpsBot\", \"text\": \"${MSG_TEXT}\" , \"icon_emoji\": \":sonic:\"}" $Slack_URI2 break else COUNT=$(($COUNT+1)) echo $COUNT fi fi sleep 60 done if [ $COUNT == 15 ] then MSG_TEXT_FAIL=" [ ${env} ]Octet API Token Change Failed! -> ECS 재기동 유효 시간이 초과 되었습니다. K-Stadium DevOps 담당자 확인 부탁 드립니다. " curl -X POST --data-urlencode "payload={\"channel\": \"#infra_monitoring\", \"username\": \"DevOpsBot\", \"text\": \"${MSG_TEXT_FAIL}\" , \"icon_emoji\": \":sonic:\"}" $Slack_URI1 curl -X POST --data-urlencode "payload={\"channel\": \"#dorian-service-infra-monitoring-dev-stg\", \"username\": \"DevOpsBot\", \"text\": \"${MSG_TEXT_FAIL}\" , \"icon_emoji\": \":sonic:\"}" $Slack_URI2 fiFROM amazon/aws-cli CMD mkdir /app WORKDIR /app COPY . . ENV REGION ap-northeast-2 ENV DOMAIN https://dev.blockchainapi.pro ENV env dev RUN ["yum", "-y", "install", "jq"] ENTRYPOINT ["/bin/bash", "/app/octet-token-change.sh"]
Last updated