Skip to content

Instantly share code, notes, and snippets.

@JameelB
Last active June 24, 2022 10:33
Show Gist options
  • Save JameelB/8dd57bdf26a3df42535e09390ad1c85a to your computer and use it in GitHub Desktop.
Save JameelB/8dd57bdf26a3df42535e09390ad1c85a to your computer and use it in GitHub Desktop.
functions for setting up osd clusters. Add this to your .bashrc/.zshrc
{
"aws": {
"access_key_id": "string",
"account_id": "string",
"secret_access_key": "string"
},
"ccs": {
"enabled": true
},
"cloud_provider": {
"id": "aws"
},
"managed": true,
"multi_az": false,
"name": "<cluster-name>",
"region": {
"id": "us-east-1"
},
"nodes" : {
"compute_machine_type" : {"id" : "m5.2xlarge" }
}
}
osd_is_cluster_ready()
{
CLUSTER_NAME=$1
if [ $# -eq 0 ]; then
CLUSTER_NAME=$(jq .name $OSD_CLUSTER_CONFIG | tr -d '\"')
fi
until [[ $(ocm get /api/clusters_mgmt/v1/clusters | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.items[] | select(.name==$CLUSTER_NAME).state') = "ready" ]]; do
STATE=$(ocm get /api/clusters_mgmt/v1/clusters | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.items[] | select(.name==$CLUSTER_NAME).state')
echo "Cluster is not yet ready. STATE: $STATE"
sleep 30
done
echo "Cluster '$CLUSTER_NAME' is ready"
}
osd_setup_credentials()
{
CLUSTER_IDENTIFIER=$1
if [ $# -eq 0 ]; then
CLUSTER_NAME=$(jq .name $OSD_CLUSTER_CONFIG | tr -d '\"')
fi
CLUSTER_ID=$(ocm get clusters --parameter search="name='$CLUSTER_IDENTIFIER' OR id='$CLUSTER_IDENTIFIER'" | jq '.items[].id' | tr -d '\"')
if [ -z "$CLUSTER_ID" ];
then
echo "Cluster ID not found for $CLUSTER_IDENTIFIER"
else
ocm get /api/clusters_mgmt/v1/clusters/$CLUSTER_ID/credentials | jq -r .kubeconfig > $KUBECONFIG
echo "OSD config for $CLUSTER_IDENTIFIER has been set to $KUBECONFIG"
osd_get_credentials $CLUSTER_IDENTIFIER
fi
}
osd_get_credentials()
{
CLUSTER_IDENTIFIER=$1
if [ $# -eq 0 ]; then
CLUSTER_IDENTIFIER=$(jq .name $OSD_CLUSTER_CONFIG | tr -d '\"')
fi
echo "Getting kubeadmin credentials for $CLUSTER_IDENTIFIER"
CLUSTER_ID=$(ocm get clusters --parameter search="name='$CLUSTER_IDENTIFIER' OR id='$CLUSTER_IDENTIFIER'" | jq '.items[].id' | tr -d '\"')
if [ -z "$CLUSTER_ID" ];
then
echo "Cluster ID not found for $CLUSTER_IDENTIFIER"
elif [[ $(ocm get /api/clusters_mgmt/v1/clusters/$CLUSTER_ID | jq '.state' | tr -d '\"') == "uninstalling" ]];
then
echo "Unable to get credentials, cluster is uninstalling"
else
until [[ $(ocm get /api/clusters_mgmt/v1/clusters | jq -r --arg CLUSTER_IDENTIFIER "$CLUSTER_IDENTIFIER" '.items[] | select(.name==$CLUSTER_IDENTIFIER).console.url' | tr -d '\"') != "null" ]]; do
echo "Console url is not available, retrying..."
sleep 5
done
CONSOLE=$(ocm get clusters --parameter search="name='$CLUSTER_IDENTIFIER' OR id='$CLUSTER_IDENTIFIER'" | jq '.items[].console.url' | tr -d '\"')
echo "Console: $CONSOLE"
ocm get /api/clusters_mgmt/v1/clusters/$CLUSTER_ID/credentials | jq '.admin'
fi
}
osd_create()
{
CLUSTER_NAME=$(jq .name $OSD_CLUSTER_CONFIG | tr -d '\"')
echo "Checking if cluster already exists with the name '$CLUSTER_NAME'"
NUM_CLUSTER_AVAILABLE=$(ocm get /api/clusters_mgmt/v1/clusters | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.items[] | select(.display_name==$CLUSTER_NAME).id' | wc -l)
if [ $NUM_CLUSTER_AVAILABLE -eq 0 ]; then
echo "Creating cluster '$CLUSTER_NAME'"
ocm post /api/clusters_mgmt/v1/clusters --body=$OSD_CLUSTER_CONFIG
else
echo "Cluster '$CLUSTER_NAME' is already available, skipping create"
fi
}
osd_setup()
{
osd_create
# End setup if cluster failed to create
if [ $? -eq 1 ]; then
return
fi
CLUSTER_NAME=$(jq .name $OSD_CLUSTER_CONFIG | tr -d '\"') # Get cluster name from json file
osd_is_cluster_ready $CLUSTER_NAME
osd_setup_credentials $CLUSTER_NAME
}
@machi1990
Copy link

love this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment