Skip to content

Instantly share code, notes, and snippets.

@bhind
Last active August 29, 2015 14:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bhind/f63846f96e0b879800db to your computer and use it in GitHub Desktop.
Save bhind/f63846f96e0b879800db to your computer and use it in GitHub Desktop.
#! /bin/bash
ZONE_NAME=XXXXXXXX.local
HOSTED_ZONE_ID=/hostedzone/XXXXXXXXXXXXXX
FILEBUF=r53_local.json
FLG=0
PRIVATE_ADDRESS_TABLE=$(aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|{InstanceName: (.Tags[]|select(.Key=="Name").Value),PrivateIpAddress}|[.InstanceName, .PrivateIpAddress]|@csv')
echo "" > ${FILEBUF}
echo "{" >> ${FILEBUF}
echo " \"Comment\": \"update ${ZONE_NAME} from script\"," >> ${FILEBUF}
echo " \"Changes\": [" >> ${FILEBUF}
echo "${PRIVATE_ADDRESS_TABLE}" | while read line; do
arrBuf=(${line//,/ });
HOST_NAME=$(echo "${arrBuf[0]}"|sed -e 's/^"//' -e 's/"$//')
FQDN=$(echo ${HOST_NAME}|awk '{print tolower($0)}')'.'$ZONE_NAME
IP_ADDRESS=$(echo "${arrBuf[1]}"|sed -e 's/^"//' -e 's/"$//')
if [[ ! -z "${IP_ADDRESS}" ]]; then
if [ ${FLG} -eq 1 ]; then
echo " }," >> ${FILEBUF}
fi
FLG=1
cat <<EOT >> ${FILEBUF}
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "${FQDN}",
"Type": "A",
"TTL": 300,
"ResourceRecords": [
{
"Value": "${IP_ADDRESS}"
}
]
}
EOT
fi
done
echo " }" >> ${FILEBUF}
echo " ]" >> ${FILEBUF}
echo "}" >> ${FILEBUF}
aws route53 change-resource-record-sets --hosted-zone-id ${HOSTED_ZONE_ID} --change-batch file://./${FILEBUF}
rm ${FILEBUF}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment