github.com/verrazzano/verrazzano@v1.7.1/ci/scripts/lre_setup_ssh_tunnel.sh (about) 1 #!/usr/bin/env bash 2 # 3 # Copyright (c) 2022, Oracle and/or its affiliates. 4 # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 5 # 6 7 if [ -z "${ssh_private_key_path}" ] ; then 8 echo "ssh_private_key_path env var must be set!" 9 exit 1 10 fi 11 if [ -z "${ssh_public_key_path}" ] ; then 12 echo "ssh_public_key_path env var must be set!" 13 exit 1 14 fi 15 if [ -z "${COMPARTMENT_ID}" ] ; then 16 echo "COMPARTMENT_ID env var must be set!" 17 exit 1 18 fi 19 if [ -z "${KUBECONFIG}" ] ; then 20 echo "KUBECONFIG env var must be set!" 21 exit 1 22 fi 23 24 echo "Compartment id is ${COMPARTMENT_ID}" 25 echo "Cluster IP is ${CLUSTER_IP}" 26 BASTION_ID=$(oci bastion bastion list \ 27 --compartment-id "${COMPARTMENT_ID}" --all --bastion-lifecycle-state ACTIVE \ 28 | jq -r '.data[0]."id"') 29 30 if [ -z "$BASTION_ID" ]; then 31 echo "Failed to get the BASTION_ID" 32 exit 1 33 fi 34 35 SESSION_ID=$(oci bastion session list --all --bastion-id $BASTION_ID \ 36 --session-lifecycle-state ACTIVE \ 37 | jq -r --arg sname ${SESSION_NAME} '.data[] | select(."display-name"==$sname) | .id') 38 if [ -z "${SESSION_ID}" ]; then 39 echo "Creating port forwarding bastion session ${SESSION_NAME} " 40 SESSION_ID=$(oci bastion session create-port-forwarding \ 41 --bastion-id $BASTION_ID \ 42 --ssh-public-key-file ${ssh_public_key_path} \ 43 --session-ttl 10800 \ 44 --target-private-ip ${CLUSTER_IP} \ 45 --display-name ${SESSION_NAME} \ 46 --target-port 6443 | jq '.data.id' | sed s/\"//g) 47 sleep 60 48 else 49 echo "Reusing existing session ${SESSION_NAME}, OCID: ${SESSION_ID}" 50 fi 51 52 if [ -z "$SESSION_ID" ]; then 53 echo "Failed to create a bastion session" 54 exit 1 55 fi 56 57 #echo "Waiting for $SESSION_ID to start" 58 #sleep 60 59 60 COMMAND=`oci bastion session get --session-id=${SESSION_ID} | \ 61 jq '.data."ssh-metadata".command' | \ 62 sed 's/"//g' | \ 63 sed 's|<privateKey>|'"${OPC_USER_KEY_FILE}"'|g' | \ 64 sed 's|<localPort>|6443|g'` 65 echo "command = ${COMMAND}" 66 if [ -z "$COMMAND" ]; then 67 echo "didn't find the command to set up ssh tunnel" 68 exit 1 69 fi 70 COMMAND+=" -o StrictHostKeyChecking=no -v -4 &" 71 echo "command = ${COMMAND}" 72 echo "Setting up the ssh tunnel" 73 eval ${COMMAND} 74 75 76 if [ $? -ne 0 ]; then 77 echo "Failed to setup ssh tunnel to the bastion host ${BASTION_ID}" 78 exit 1 79 fi 80 81 echo "Successfully set up ssh tunnel"