github StackExchange/dnscontrol v4.9.0

23 days ago

Greetings DNS Fans!

Release v4.9.0 has many new features, a preview of a major performance improvement ('ppreview'/'ppush') and many bug fixes! Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!

Highlights:

  • ppreview/ppush are new subcommands that are a preview of significantly faster versions of preview/push. See below.
  • REV() now supports RFC4183!
  • DNAME records are now supported.
  • get-zones --format-js output follows recommended practices better.
  • @cafferata has continued to make big improvements in documentation consistency, accuracy, and completeness.
  • @cafferata has further automated and enhanced the CICD process.
  • Code cleanup: A lot of dead code and linting completed.

Preview performance experiment

Subcommands ppreview/ppush are experimental versions of preview/push that collect all data concurrently (i.e. in parallel). If this is a success, they will replace the existing preview/push subcommands. Some benchmarks show a 66% reduction in run-time! This rewrite is something we've wanted to do for 6+ years!

dnscontrol preview                # The original command
dnscontrol ppreview               # Run capable providers in parallel
dnscontrol ppreview --cmode=none  # Run each provider one at a time
dnscontrol ppreview --cmode=all   # Run all providers concurrently (unsafe!)

Here's some unscientific benchmarks based on the dnsconfig.js used at Stack Overflow:

  • 3m21.549s (preview)
  • 2m34.349s (ppreview --cmode=none)
  • 1m5.368s (ppreview)

FYI: Add the --full flag to see what it is doing.

The "Concurrency Verified" column on https://docs.dnscontrol.org/service-providers/providers indicates which providers will run concurrently. (As of this release: AZURE_DNS, CLOUDFLAREAPI, CSCGLOBAL, GCLOUD, ROUTE53). If any provider related to a DNS domain (registrar or DNS service provider(s)) are not on the list, the domain is processed one at a time.

Do you maintain a provider? Please check if your provider can run concurrently. See #2873 for instructions

Are you a golang performance guru? I need help! I thought the concurrent version would be much faster. Can you help me find the problem?

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
  • get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Install with MacPorts
sudo port install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol
Install with MacPorts
sudo port upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

Don't miss a new dnscontrol release

NewReleases is sending notifications on new releases.