Releases: gfish/sprinkle_dns
Version 1.0.3 released - Support for CAA records
Jeez, how are you? Is this thing still on? It's been a long time, time really flies when you're having fun.
SprinkleDNS is just chugging along here at Billetto, but we needed a little update to support CAA-records, so here's a new release. I'm expecting to do a little housecleaning soon to get dependencies updated and cleaned the code up a bit.
Added
- Added an LetsEncrypt guide to the README, including the scripts to communicate with LetsEncrypt.
- Added support for CAA-records, https://blog.qualys.com/product-tech/2017/03/13/caa-mandated-by-cabrowser-forum
Small bugfixes
We had a small issue with the non-interactive printer, that is fixed now, and specs added for that part of SprinkleDNS.
Fixed
- Fixed issue with the non-interactive printer 1e43591
Small features introduced to improve quality of life
Quick release after 1.0.0
, that adds a new configuration option to hide untouched entries (if you have many domains your terminal might get cluttered), and a premature exit in case of no changes.
Added
1.0.0 is finally here!
After 200+ commits from 3 contributors the idea that I had to manage all of Billetto's domains has finally hit version 1.0.0
, it took us 4 years to get here, but the project has been managing our production DNS for our over 30+ domains ever since the first few commits.
I remember I remotely paired with @mpraglowski to build the initial version, but he never ended up making a single commit in the codebase.
Before we started we had to manually update our DNS configuration from a website interface, so if our main production IP changed from 54.217.222.242
to 26.212.111.142
, I had to manually login to GratisDNS (a danish DNS host), update the DNS settings for all of our domains one-by-one, and that could take a while for 30 domains. But with SprinkleDNS, I could just change our configuration like this:
DOMAINS.each do |domain|
- s.entry("A", "*.#{domain}", '54.217.222.242', 360)
- s.entry("A", domain, '54.217.222.242', 360)
+ s.entry("A", "*.#{domain}", '26.212.111.142', 360)
+ s.entry("A", domain, '26.212.111.142', 360)
end
And run our script, and all of our domains would, almost instantly, be updated. We could also now have our DNS configuration in version control, so all of our changes were documented (and backed up!).
So whats new?
Better documentation!
The README actually explains what the project is, how to get started, and it tells you how the policy at AWS should look like! There are lots of room for improvement, but it is much better than it was.
SprinkleDNS is finally a Rubygem!
This means that releases will be available over at https://rubygems.org/gems/sprinkle_dns and it will be easier to install in your Gemfile just by writing gem 'sprinkle_dns'
and bundle.
Configuration
We are now able to tell SprinkleDNS how we want it to behave, earlier versions just assumed you want to change DNS and when you ran the .sprinkle!
command the changes were already being applied, with the new configuration options we are able to list the changes we are about to make, and we can ask if you agree with the changes before we apply them.
You can see a example of a full run (with a diff) here:
diff and force
As shown in the earlier screenshot, SprinkleDNS can now show you the changes it is about to make, and with the force: false
it will ask you if you agree with the changes it is about to make before they are applied.
create_hosted_zones
This option will allow SprinkleDNS to create missing hosted zones, this was actually a feature added early on by none other than @paneq but I deemed it unsafe when we didn't have a proper way to show the diff of what is going to be created, now that our differ has been created, it has been re-added.
delete
Like the previous configuration option, this was disabled because we didn't have a good way of showing the changes, now it is enabled, so if an entry is not referenced in the configuration it will be deleted.
ALIAS-entries
So before 1.0.0
we only supported static entries like A
records pointing to an IP, or a CNAME
pointing to another hostname, but @swistak35 made it possible for SprinkleDNS to use the ALIAS feature of Route53 that will allow you to point an entry to an ELB:
This is handy if you want to point an apex domain to an ELB:
sdns.alias('A', 'billetto.com', 'Z215JYRZR1TBD5', 'dualstack.mothership-test-elb-546580691.eu-central-1.elb.amazonaws.com')
You can read more about ALIAS records here: https://aws.amazon.com/premiumsupport/knowledge-center/route-53-create-alias-records/