Skip to content

Releases: gfish/sprinkle_dns

Version 1.0.3 released - Support for CAA records

26 May 16:45
d066576
Compare
Choose a tag to compare

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

Small bugfixes

10 May 09:44
55e3702
Compare
Choose a tag to compare

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

10 May 09:40
93e72f2
Compare
Choose a tag to compare

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

  • Introduced the show_untouched: false configuration option that will tell the differ to hide the entries that aren't created/updated/deleted, 6e8c003
  • Introduced a premature exit in case of no changes detected, 9c88b20

1.0.0 is finally here!

10 May 08:59
6d2d3b0
Compare
Choose a tag to compare

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:

screenie_1557405405_873229

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/