Install Guacamole on OpenShift v4

From Bitbull Wiki
Jump to navigation Jump to search

guacamole (multi container pod)


genpasswd() {
   local l=$1
   [ "$l" == "" ] && l=16
   tr -dc A-Za-z0-9_=., < /dev/urandom | head -c ${l} | xargs 
}

oc new-project guacamole
oc create serviceaccount anyuid
oc adm policy add-scc-to-user anyuid -z anyuid

MYSQL_PASSWORD=$(genpasswd)

# create configuration db from template
oc process -n openshift mariadb-persistent MYSQL_DATABASE=guacamole MYSQL_USER=guacamole MYSQL_PASSWORD=$MYSQL_PASSWORD VOLUME_CAPACITY=5Gi | oc create -f -

# export db schema and import into database
oc run guacamole --image=guacamole/guacamole --restart=Never --command -- /opt/guacamole/bin/initdb.sh --mysql
oc logs guacamole > initdb.sql
oc delete pod guacamole
export MYSQLPOD=`oc get pod -o jsonpath='{.items[0].metadata.name}' | grep mariadb`
oc rsh $MYSQLPOD /usr/bin/mysql -h 127.0.0.1 -P 3306 -u guacamole -p$MYSQL_PASSWORD guacamole < initdb.sql

# deploy guacd and tomcat into same pod
oc new-app guacamole/guacd+guacamole/guacamole --name=guacamole -e GUACAMOLE_HOME=/tmp -e GUACD_HOSTNAME=127.0.0.1 -e GUACD_PORT=4822 -e  MYSQL_HOSTNAME=mariadb -e MYSQL_PORT=3306 -e MYSQL_DATABASE=guacamole -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=$MYSQL_PASSWORD
# attach service account to dc
oc patch deployment/guacamole --patch '{"spec":{"template":{"spec":{"serviceAccountName": "anyuid"}}}}'
oc patch deployment/guacamole-1 --patch '{"spec":{"template":{"spec":{"serviceAccountName": "anyuid"}}}}'

# expose the service
oc create route edge guacamole-1 --service=guacamole-1 --path=/guacamole --port=8080 --hostname=guacamole.bitbull.ch