I have had got some ask on how to discover which Azure cloud the current system is running on. Basically you want to figure out if you are running something in the Azure public cloud or in one of the specialized government clouds.
Unfortunately this is not currently available in Instance Metadata Service. However, it can be found out using a an additional call. The basic logic is to get the current location over IMDS and then call Azure Management API to see which cloud that location is present in.
Sample script can be found at https://github.com/bonggeek/share/blob/master/azlocation.sh
#!/bin/bash locations=`curl -s -H Metadata:True "http://169.254.169.254/metadata/instance/compute/location?format=text&api-version=2017-04-02"` # Test regions #locations="indiasouth" #locations="usgovsouthcentral" #locations="chinaeast" #locations="germanaycentral" endpoints=`curl -s https://management.azure.com/metadata/endpoints?api-version=2017-12-01` publicLocations=`echo $endpoints | jq .cloudEndpoint.public.locations` if grep -q $locations <<< $publicLocations; then echo "PUBLIC" exit 1 fi chinaLocations=`echo $endpoints | jq .cloudEndpoint.chinaCloud.locations` if grep -q $locations <<< $chinaLocations; then echo "CHINA" exit 2 fi usGovLocations=`echo $endpoints | jq .cloudEndpoint.usGovCloud.locations` if grep -q $locations <<< $usGovLocations; then echo "US GOV" exit 3 fi germanLocations=`echo $endpoints | jq .cloudEndpoint.germanCloud.locations` if grep -q $locations <<< $germanLocations; then echo "GERMAN" exit 4 fi echo "Unknown' exit 0
This is what I see for my VM
Post a Comment