Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

zonesync

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zonesync

  • 0.7.0
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

Zonesync

CI Status

Sync your DNS host with your DNS zone file, making it easy to version your zone file and sync changes.

Why?

Configuration management is important, and switched-on technical types now agree that "configuration is code". This means that your DNS configuration should be treated with the same degree of respect you would give to any other code you would write.

In order to live up to this standard, there needs to be an easy way to manage your DNS host file in a SCM tool like Git, allowing you to feed it into a continuous integration pipeline. This library enables this very ideal, making DNS management no different to source code management.

How?

Install

Add zonesync to your Gemfile:

source 'https://rubygems.org'

gem 'zonesync'

or run:

gem install zonesync

DNS zone file

The following is an example DNS zone file for example.com:

$ORIGIN example.com.
$TTL 1h
example.com.  IN  SOA  ns.example.com. username.example.com. (2007120710; 1d; 2h; 4w; 1h)
example.com.  NS    ns
example.com.  NS    ns.somewhere.example.
example.com.  MX    10 mail.example.com.
@             MX    20 mail2.example.com.
@             MX    50 mail3
example.com.  A     192.0.2.1
              AAAA  2001:db8:10::1
ns            A     192.0.2.2
              AAAA  2001:db8:10::2
www           CNAME example.com.
wwwtest       CNAME www
mail          A     192.0.2.3
mail2         A     192.0.2.4
mail3         A     192.0.2.5
ignore        A     192.0.2.6 ; zonesync: ignore

Note that records with a comment containing "zonesync: ignore" will not be touched during the sync. I'm considering inverting this from a blacklist to a whitelist in a future version, to avoid stomping on collaborators' records.

DNS Host

We need to tell zonesync about our DNS host by building a small YAML file. The structure of this file will depend on your DNS host, so here are some examples:

Cloudflare

provider: Cloudflare
zone_id: <CLOUDFLARE_DOMAIN_ZONE_ID>
token: <CLOUDFLARE_API_TOKEN>
# or instead of token you can auth with:
email: <CLOUDFLARE_EMAIL>
key: <CLOUDFLARE_API_KEY>
``

**Route 53**

provider: AWS aws_access_key_id: <AWS_ACCESS_KEY_ID> aws_secret_access_key: <AWS_SECRET_ACCESS_KEY>


### Usage

#### CLI

$ bundle exec zonesync

$ bundle exec zonesync --dry-run # log to STDOUT but don't actually perform the sync

$ bundle exec zonesync generate # generate a Zonefile from the configured provider

#### Ruby

Assuming your zone file lives in `hostfile.txt` and your DNS provider credentials are configured in `provider.yml`:

```ruby
require 'zonesync'
Zonesync.call(zonefile: 'hostfile.txt', credentials: YAML.load('provider.yml'))

FAQs

Package last updated on 23 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc