#!/usr/bin/env bash # source https://learn.microsoft.com/en-us/azure/virtual-machines/linux/no-agent attempts=1 until [ "$attempts" -gt 5 ] do echo "obtaining goal state - attempt $attempts" goalstate=$(curl --fail -v -X 'GET' -H "x-ms-agent-name: azure-vm-register" \ -H "Content-Type: text/xml;charset=utf-8" \ -H "x-ms-version: 2012-11-30" \ "http://168.63.129.16/machine/?comp=goalstate") if [ $? -eq 0 ] then echo "successfully retrieved goal state" retrieved_goal_state=true break fi sleep 5 attempts=$((attempts+1)) done if [ "$retrieved_goal_state" != "true" ] then echo "failed to obtain goal state - cannot register this VM" exit 1 fi container_id=$(grep ContainerId <<< "$goalstate" | sed 's/\s*<\/*ContainerId>//g' | sed 's/\r$//') instance_id=$(grep InstanceId <<< "$goalstate" | sed 's/\s*<\/*InstanceId>//g' | sed 's/\r$//') ready_doc=$(cat << EOF 1 $container_id $instance_id Ready EOF ) attempts=1 until [ "$attempts" -gt 5 ] do echo "registering with Azure - attempt $attempts" curl --fail -v -X 'POST' -H "x-ms-agent-name: azure-vm-register" \ -H "Content-Type: text/xml;charset=utf-8" \ -H "x-ms-version: 2012-11-30" \ -d "$ready_doc" \ "http://168.63.129.16/machine?comp=health" if [ $? -eq 0 ] then echo "successfully register with Azure" break fi sleep 5 # sleep to prevent throttling from wire server done