forked from joshlong/bootiful-microservices
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcf.sh
executable file
·145 lines (112 loc) · 2.84 KB
/
cf.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
set -e
#
# the big CloudFoundry installer
#
CLOUD_DOMAIN=${DOMAIN:-run.pivotal.io}
CLOUD_TARGET=api.${DOMAIN}
CF_USER=${1:-$CF_USER}
CF_PASSWORD=${2:-$CF_PASSWORD}
CF_ORG=${3:-$CF_ORG}
CF_SPACE=${4:-$CF_SPACE}
RESERVATIONS_DB=reservations-postgresql
RESERVATIONS_MQ=reservations-rabbitmq
## COMMON
function init_services(){
cf cs cloudamqp lemur $RESERVATIONS_MQ
cf cs elephantsql turtle $RESERVATIONS_DB
}
function install_cf(){
mkdir -p $HOME/bin
curl -v -L -o cf.tgz 'https://cli.run.pivotal.io/stable?release=linux64-binary&version=6.15.0&source=github-rel'
tar zxpf cf.tgz
mkdir -p $HOME/bin && mv cf $HOME/bin
}
function validate_cf(){
cf -v || install_cf
export PATH=$PATH:$HOME/bin
cf api https://api.run.pivotal.io
cf auth $CF_USER "$CF_PASSWORD" && \
cf target -o $CF_ORG -s $CF_SPACE && \
cf apps
}
function login(){
cf api | grep ${CLOUD_TARGET} || cf api ${CLOUD_TARGET} --skip-ssl-validation
cf a | grep OK || cf login
}
function app_domain(){
D=`cf apps | grep $1 | tr -s ' ' | cut -d' ' -f 6 | cut -d, -f1`
echo $D
}
function deploy_app(){
APP_NAME=$1
echo "APP_NAME=$APP_NAME"
cd $APP_NAME
cf push ${APP_NAME}
#APPLICATION_DOMAIN="`app_domain $APP_NAME`"
#echo "APPLICATION_DOMAIN=$APPLICATION_DOMAIN"
#cf env $APP_NAME | grep APPLICATION_DOMAIN || cf set-env $APP_NAME APPLICATION_DOMAIN $APPLICATION_DOMAIN
#cf restart $APP_NAME
cd ..
}
function deploy_service(){
N=$1
D=`app_domain $N`
JSON='{"uri":"http://'$D'"}'
echo cf cups $N -p $JSON
cf cups $N -p $JSON
}
function deploy_config_service(){
NAME=config-service
deploy_app $NAME
deploy_service $NAME
}
function deploy_eureka_service(){
NAME=eureka-service
deploy_app $NAME
deploy_service $NAME
}
function deploy_hystrix_dashboard(){
deploy_app hystrix-dashboard
}
function deploy_zipkin_service(){
deploy_app zipkin-service
}
function deploy_reservation_service(){
deploy_app reservation-service
}
function deploy_reservation_client(){
deploy_app reservation-client
}
function reset(){
echo "reset.."
apps="hystrix-dashboard reservation-client reservation-service eureka-service config-service zipkin-service"
apps_arr=( $apps )
for a in "${apps_arr[@]}";
do
echo $a
cf d -f $a
done
services="${RESERVATIONS_DB} ${RESERVATIONS_MQ} zipkin-service eureka-service config-service"
services_arr=( $services )
for s in "${services_arr[@]}";
do
echo $s
cf ds -f $s
done
cf delete-orphaned-routes -f
}
###
### INSTALLATION STEPS
###
mvn -DskipTests=true clean install
validate_cf
login
reset
init_services
deploy_config_service
deploy_eureka_service
deploy_zipkin_service
deploy_reservation_service
deploy_reservation_client
deploy_hystrix_dashboard