Sync DNS records stored in a flat file format to your DNS provider. Cloudflare support currently provided.
$ pip install namesync
Create a file with the name of your domain:
$ touch example.com
Or, if you have existing records, you can export them:
$ namesync --get example.com
Enter one record per line with the following format:
<record-type> <name> <value> <ttl:optional>
For example:
A * 10.10.10.10 # You can even use comments A . 10.10.10.10 # . references the domain itself, example.com A test 10.10.10.11 A example 10.10.10.12 86400 CNAME mail ghs.googlehosted.com MX . aspmx.l.google.com
MX records allow you to specify a priority:
MX <name> <value> <priority:optional> <ttl:optional>
Like this:
MX . alt1.aspmx.l.google.com 20 MX . aspmx3.googlemail.com 30 86400
If the value contains spaces, quote it:
TXT . "v=spf1 a include:amazonses.com include:_spf.google.com ~all"
Then sync your records:
$ namesync example.com
You will be given a chance to review your changes before they are synced:
The following changes will be made: ADD A * 10.10.10.10 ADD A example 10.10.10.12 86400 ADD A test 10.10.10.11 ADD CNAME mail ghs.googlehosted.com ADD MX . aspmx.l.google.com UPDATE A . 10.10.10.10 REMOVE A old 10.10.10.13 Do you want to continue? [y/N]
usage: namesync [-h] [-g] [-z ZONE] [-y] [-p PROVIDER] [-c CONFIG] RECORDS positional arguments: RECORDS file containing DNS records, one per line. The zone is derived from the basename of this file. For example, if "dns/example.com" is used then the zone is assumed to be "example.com" unless the --zone option is used optional arguments: -h, --help show this help message and exit -g, --get save existing DNS records to RECORDS -z ZONE, --zone ZONE specify the zone instead of using the RECORDS filename -y, --yes sync records without prompting before making changes -p PROVIDER, --provider PROVIDER use the specified provider [default: cloudflare] -c CONFIG, --config CONFIG specify config location [default: ~/.namesync]