-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathoshinko-deploy.sh
executable file
·173 lines (155 loc) · 5.16 KB
/
oshinko-deploy.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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#!/bin/bash
# This script is for deploying oshinko into OpenShift. The target of
# installation can be an existing OpenShift deployment or an all-in-one
# container can be started.
#
# In either case, access to the `oc` command is required.
#
# example usage:
#
# $ oshinko-deploy.sh -c 10.0.1.100 -o oshinko.10.0.1.100.xip.io
#
# this will deploy oshinko into the OpenShift cluster running at 10.0.1.100
# and set the oshinko webui route url to oshinko.10.0.1.100.xip.io.
# further it will use the user `developer` and project `myproject`, asking
# for a login when appropriate.
# for further parameters please see the help text.
if which oc &> /dev/null
then :
else
echo "Cannot find oc command, please check path to ensure it is installed"
exit 1
fi
DEFAULT_OSHINKO_REST_IMAGE=radanalyticsio/oshinko-rest
DEFAULT_OSHINKO_WEB_IMAGE=radanalyticsio/oshinko-webui
DEFAULT_SPARK_IMAGE=radanalyticsio/openshift-spark
DEFAULT_OPENSHIFT_USER=developer
DEFAULT_OPENSHIFT_PROJECT=myproject
while getopts :dc:u:p:s:w:r:o:t:ih opt; do
case $opt in
d)
OS_ALLINONE=true
;;
c)
OS_CLUSTER=$OPTARG
;;
u)
OS_USER=$OPTARG
USER_REQUESTED=true
;;
p)
PROJECT=$OPTARG
;;
s)
SPARK_IMAGE=$OPTARG
;;
w)
WEB_IMAGE=$OPTARG
;;
r)
REST_IMAGE=$OPTARG
;;
o)
WEBROUTE=$OPTARG
;;
t)
ALT_TEMPLATE=$OPTARG
;;
i)
S2I_TEMPLATES=false
;;
h)
echo "usage: oshinko-deploy.sh [options]"
echo
echo "deploy the oshinko suite into a running OpenShift cluster"
echo
echo "optional arguments:"
echo " -h show this help message"
echo " -d create an all-in-one docker OpenShift on localhost"
echo " -c CLUSTER OpenShift cluster url to login against (default: https://localhost:8443)"
echo " -u USER OpenShift user to run commands as (default: $DEFAULT_OPENSHIFT_PROJECT)"
echo " -p PROJECT OpenShift project name to install oshinko into (default: $DEFAULT_OPENSHIFT_USER)"
echo " -s IMAGE spark docker image to use for clusters (default: $DEFAULT_SPARK_IMAGE)"
echo " -w IMAGE oshinko-webui docker image to use for deployment (default: $DEFAULT_OSHINKO_WEB_IMAGE)"
echo " -r IMAGE oshinko-rest docker image to use for deployment (default: $DEFAULT_OSHINKO_REST_IMAGE)"
echo " -o HOSTNAME hostname to use in exposed route to oshinko-web"
echo " -t TEMPLATE an OpenShift template file to deploy oshinko (default: tools/server-ui-template.yaml curl'd from upstream)"
echo " -i do not load the oshinko s2i templates into the project (default: curl from the oshinko-s2i upstream repo)"
echo
exit
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit
;;
esac
done
if [ -z "$OS_USER" ]
then
echo "user not set, using default value"
OS_USER=$DEFAULT_OPENSHIFT_USER
fi
if [ -z "$PROJECT" ]
then
echo "project name not set, using default value"
PROJECT=$DEFAULT_OPENSHIFT_PROJECT
fi
if [ -z "$SPARK_IMAGE" ]
then
SPARK_IMAGE=$DEFAULT_SPARK_IMAGE
fi
if [ -z "$WEB_IMAGE" ]
then
WEB_IMAGE=$DEFAULT_OSHINKO_WEB_IMAGE
fi
if [ -z "$REST_IMAGE" ]
then
REST_IMAGE=$DEFAULT_OSHINKO_REST_IMAGE
fi
if [ -n "$OS_ALLINONE" ]
then
if [ -n "$OS_CLUSTER" ]
then
echo "Error: You have requested an all-in-one deployment AND specified a cluster address."
echo "Please choose one of these options and restart."
exit 1
fi
if [ -n "$USER_REQUESTED" ]
then
echo "Error: You have requested an all-in-one deployment AND specified an OpenShift user."
echo "Please choose either all-in-one or a cluster deployment if you need to use a specific user."
exit 1
fi
oc cluster up
fi
oc login $OS_CLUSTER -u $OS_USER
oc new-project $PROJECT
oc create sa oshinko -n $PROJECT
oc policy add-role-to-user admin system:serviceaccount:$PROJECT:oshinko -n $PROJECT
if [ -n "$ALT_TEMPLATE" ]
then
oc create -n $PROJECT -f $ALT_TEMPLATE
else
curl -s https://raw.githubusercontent.com/radanalyticsio/oshinko-rest/master/tools/server-ui-template.yaml \
| oc create -n $PROJECT -f -
fi
if [ -z "$S2I_TEMPLATES" ]
then
curl -s https://raw.githubusercontent.com/radanalyticsio/oshinko-s2i/master/pyspark/pysparkbuilddc.json \
| oc create -n $PROJECT -f -
fi
if [ -n "$WEBROUTE" ]
then
oc new-app --template oshinko \
-n $PROJECT \
-p OSHINKO_SERVER_IMAGE=$REST_IMAGE \
-p OSHINKO_CLUSTER_IMAGE=$SPARK_IMAGE \
-p OSHINKO_WEB_IMAGE=$WEB_IMAGE \
-p OSHINKO_WEB_ROUTE_HOSTNAME=$WEBROUTE
else
oc new-app --template oshinko \
-n $PROJECT \
-p OSHINKO_SERVER_IMAGE=$REST_IMAGE \
-p OSHINKO_CLUSTER_IMAGE=$SPARK_IMAGE \
-p OSHINKO_WEB_IMAGE=$WEB_IMAGE
fi