Install Guacamole on OpenShift v4
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