From 5ce66f738d13f01bcec0e54d0e87248713ad3b99 Mon Sep 17 00:00:00 2001 From: abrown38 Date: Tue, 18 Jun 2024 14:16:50 +0100 Subject: [PATCH 1/3] Fix Chrome Version --- ansible/roles/win_chocolatey/vars/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/win_chocolatey/vars/main.yml b/ansible/roles/win_chocolatey/vars/main.yml index c2ab278..451eb06 100644 --- a/ansible/roles/win_chocolatey/vars/main.yml +++ b/ansible/roles/win_chocolatey/vars/main.yml @@ -40,4 +40,4 @@ community_packages: - { name: 'veeam-agent', version: '6.1.0.350' } - { name: 'DotNet4.5.2', version: '4.5.2.20140902' } - { name: 'PowerBI', version: '2.128.952.0' } - - { name: 'GoogleChrome', version: '125.0.6422.142' } \ No newline at end of file + - { name: 'GoogleChrome', version: '126.0.6478.62' } \ No newline at end of file From 79932ac9864c79476a6a0b28badc3ab60f283422 Mon Sep 17 00:00:00 2001 From: abrown38 Date: Thu, 20 Jun 2024 12:37:59 +0100 Subject: [PATCH 2/3] fix typo --- ansible/vars/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/vars/common.yml b/ansible/vars/common.yml index b988f9b..582ac68 100644 --- a/ansible/vars/common.yml +++ b/ansible/vars/common.yml @@ -1,4 +1,4 @@ -####### Manged by Rundeck ####### +####### Managed by Rundeck ####### os_project: %OS_PROJECT% win_project: %WIN_PROJECT% fs_vol_size: %FS_VOL_SIZE% From e1b53ffb68535f5118a4edad4ed4c7f5917cd567 Mon Sep 17 00:00:00 2001 From: abrown38 Date: Fri, 21 Jun 2024 12:17:11 +0100 Subject: [PATCH 3/3] update script for load balancing --- register_vms.sh | 84 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 25 deletions(-) diff --git a/register_vms.sh b/register_vms.sh index 69c83ea..9853aa5 100644 --- a/register_vms.sh +++ b/register_vms.sh @@ -1,14 +1,16 @@ #!/bin/bash # Varialbes Passed By Rundeck -OS_PROJECT=$1 -WIN_PROJECT=$2 -API_TOKEN=$3 +declare -gr OS_PROJECT=$1 +declare -gr WIN_PROJECT=$2 +declare -gr API_TOKEN=$3 +declare -g RD_JOB_ID=$4 +declare -g RD_EXEC_ID=$5 export OS_CLIENT_CONFIG_FILE=/deployments/$OS_PROJECT-$WIN_PROJECT/clouds.yaml # check directory exists -if [ ! -d /deployments/$OS_PROJECT-$WIN_PROJECT/ ]; then +if [[ ! -d /deployments/$OS_PROJECT-$WIN_PROJECT/ ]]; then >&2 echo "Directory Doesn't exist" exit 1 fi @@ -16,41 +18,73 @@ fi RD_JOB_ID=$(cat /deployments/$OS_PROJECT-$WIN_PROJECT/JOB_ID) RD_EXEC_ID=$(cat /deployments/$OS_PROJECT-$WIN_PROJECT/EXEC_ID) +initialize_json() { + declare -r OUTPUT_FILE="/deployments/$OS_PROJECT-$WIN_PROJECT/data.json" + + jq -n ' + { + "job_id": "'$RD_JOB_ID'", + "execution_id": "'$RD_EXEC_ID'", + "status": "ok", + "DC": {}, + "WB": {"load_balancer": true, VM: []}, + "APP": {"load_balancer": false, VM: []}, + "GPU": {"load_balancer": false, VM: []} + }' > $OUTPUT_FILE + declare -g -r VM_JSON="/deployments/$OS_PROJECT-$WIN_PROJECT/data.json" +} + +add_vm() { + + declare -r NAME=$1 + declare -r UUID=$2 + declare -r IP=$3 + declare -r TYPE=$4 + + if [[ $TYPE == "DC" ]]; then + jq ".${TYPE} += {\"name\": \"${NAME}\", \"ip\": \"${IP}\", \"uuid\": \"${UUID}\"}" $VM_JSON > temp.json + mv -f temp.json $VM_JSON + else + jq ".${TYPE}.VM += [{\"name\": \"${NAME}\", \"ip\": \"${IP}\", \"uuid\": \"${UUID}\"}]" $VM_JSON > temp.json + mv -f temp.json $VM_JSON + fi +} post_request() { - local INPUT=$1 - local TYPE=$2 - - local UUID=$(echo "$INPUT" | awk '{print $1}') - local NAME=$(echo "$INPUT" | awk '{print $2}') - local IPv4=$(echo "$INPUT" | awk '{print $4}' | cut -d '=' -f 2) - + #declare -r API_ENDPOINT='https://projects.eidf.ac.uk/testportal/job/api/notification' + declare -r API_ENDPOINT='http://www.adbraun.lol:9001' + jq -c . $VM_JSON curl \ -X POST \ -H "content-type: application/json" \ -H "accept: application/json" \ -H "Authorization: Token $API_TOKEN" \ - -d '{ "job_id":"'$RD_JOB_ID'","execution_id":"'$RD_EXEC_ID'", "status":"ok", "data":{"name":"'$NAME'", "ip":"'$IPv4'", "uuid":"'$UUID'", "type":"'$TYPE'"}}' \ - https://projects.eidf.ac.uk/testportal/job/api/notification + -d "'$(jq -c . $VM_JSON)'" \ + $API_ENDPOINT } main() { - # Get list of VMs within project - local TABLE=$(openstack --os-cloud $OS_PROJECT server list | tail -n +4 | head -n -1 | sed 's/|//g') + initialize_json + while read -r VM; do + declare vm_uuid=$(jq -r '.ID' <<< "$VM") + declare vm_name=$(jq -r '.Name' <<< "$VM") + declare vm_ip=$(jq -r '.IP' <<< "$VM") - echo "$TABLE" | while read -r line; do - # Pattern to match user VMs - if echo "$line" | grep -qE "$OS_PROJECT\-$WIN_PROJECT\-wb|app|gpu"; then - post_request "$line" "CLIENT" + if [[ "$vm_name" =~ ^$OS_PROJECT-$WIN_PROJECT-dc01$ ]]; then + add_vm $vm_name $vm_uuid $vm_ip 'DC' - # Pattern to match DC01 - elif echo "$line" | grep -qE "$OS_PROJECT\-$WIN_PROJECT\-dc01"; then - post_request "$line" "DC" + elif [[ "$vm_name" =~ ^$OS_PROJECT-$WIN_PROJECT-wb[0-9]+$ ]]; then + add_vm $vm_name $vm_uuid $vm_ip 'WB' - else - continue + elif [[ "$vm_name" =~ ^$OS_PROJECT-$WIN_PROJECT-app[0-9]+$ ]]; then + add_vm $vm_name $vm_uuid $vm_ip 'APP' + + elif [[ "$vm_name" =~ ^$OS_PROJECT-$WIN_PROJECT-gpu[0-9]+$ ]]; then + add_vm $vm_name $vm_uuid $vm_ip 'GPU' fi - done + done < <(openstack --os-cloud $OS_PROJECT server list -f json | jq -c '.[] | {ID, Name, IP: .Networks.external[0]}') + + post_request } main