Skip to content

Instantly share code, notes, and snippets.

@surma
Created January 31, 2014 08:39
Show Gist options
  • Save surma/8728516 to your computer and use it in GitHub Desktop.
Save surma/8728516 to your computer and use it in GitHub Desktop.
#!/bin/bash
HOSTNAME=$(curl -s http://metadata/computeMetadata/v1beta1/instance/hostname | cut -d '.' -f 1)
APIKEY=$(curl -s http://metadata/computeMetadata/v1beta1/project/attributes/dnsimpleDomainToken)
DOMAIN=$(curl -s http://metadata/computeMetadata/v1beta1/project/attributes/dnsimpleDomain)
IP=$(curl -s http://metadata/computeMetadata/v1beta1/instance/network-interfaces/0/access-configs/0/external-ip)
if [ $(curl -s -X GET -H "X-DNSimple-Domain-Token: $APIKEY" -H "Accept: application/json" "https://dnsimple.com/domains/$DOMAIN/records?type=A" | grep $HOSTNAME | wc -l) -eq 0 ]; then
echo "Creating new record..."
curl -s -X POST -H "X-DNSimple-Domain-Token: $APIKEY" -H "Accept: application/json" -H "Content-Type: application/json" -d "{\"record\":{\"name\":\"$HOSTNAME\",\"record_type\": \"A\", \"content\": \"$IP\", \"ttl\": 60}}" "https://dnsimple.com/domains/$DOMAIN/records"
else
ID=$(curl -s -X GET -H "X-DNSimple-Domain-Token: $APIKEY" -H "Accept: application/json" "https://dnsimple.com/domains/$DOMAIN/records?type=A" | python -mjson.tool | grep "\"$HOSTNAME\"" -B4 -A6 | grep '"id"' | grep -Eo '[0-9]+')
echo "Found existing record with ID $ID"
curl -s -X PUT -H "X-DNSimple-Domain-Token: $APIKEY" -H "Accept: application/json" -H "Content-Type: application/json" -d "{\"record\":{\"name\":\"$HOSTNAME\",\"record_type\": \"A\", \"content\": \"$IP\", \"ttl\": 60}}" "https://dnsimple.com/domains/$DOMAIN/records/$ID"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment