October 22, 2016 Leave a comment
Cloud servers get often randomly picked public IP when they are booted up. Here is a script can be used to update the Gandi.net DNS records automatically on EC2 server startup.
Step 1. Get API key
Step 2. Configure
Download update_domain.py python script and fill in your domain details and the Gandi.net API key.
# CONFIGURATION DOMAIN = "yourdomain.com" # the domain name to update NAMES = ["@", "www"] # A record names to update API_KEY= '*********' # fill in gandi API key
Configuration above would update IP for records ‘yourdomain.com’ and ‘www.yourdomain.com’.
You can also redefine the function ‘resolve_ip’ to adapt the script for other environments than EC2. Current implementation uses EC2’s internal REST API to query instances public IP.
Step 3. Run and test
Run the script on the EC2 server, it should resolve the local IP, Zone file and check if records need to be updated.
$ python update_domain.py
Script does dry run by default and will not update records, set DRY_RUN flag to False to update the records for real.
DRY_RUN = False # Set false to actually modify Zone
Step 4. Run on boot up
When you’re satisfied with the settings and tested script manually, run command ‘crontab -e’ and add the following entry.
@reboot python /home/ubuntu/update_domain.py
Cron will now run the script on every reboot.