Skip to content

1.0.0 is finally here!

Compare
Choose a tag to compare
@kaspergrubbe kaspergrubbe released this 10 May 08:59
· 24 commits to master since this release
6d2d3b0

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/