/vinyldns

Vendor agnostic DNS front-end for managing DNS self-service across your systems.

Primary LanguageScalaApache License 2.0Apache-2.0

Join the chat at https://gitter.im/vinyldns/Lobby

VinylDNS

VinylDNS

(we are in the midst of setting up our projects, backlog, and everything else. Will be in tip top shape in the coming days)

VinylDNS is a vendor agnostic front-end for managing self-service DNS across your DNS systems. The platform provides fine-grained access controls, auditing of all changes, a self-service user interface, secure REST based API, and integration with infrastructure automation tools like Ansible and Terraform. It is designed to integrate with your existing DNS infrastructure, and provides extensibility to fit your installation.

Currently, VinylDNS supports:

  • Connecting to existing DNS Zones
  • Creating, updating, deleting DNS Records
  • Working with forward and reverse zones
  • Working with IP4 and IP6 records
  • Governing access with fine-grained controls at the record and zone level
  • Bulk updating of DNS records across zones

VinylDNS helps secure DNS management via:

  • AWS Sig4 signing of all messages to ensure that the message that was sent was not altered in transit
  • Throttling of DNS updates to rate limit concurrent updates against your DNS systems
  • Encrypting user secrets and TSIG keys at rest and in-transit
  • Recording every change made to DNS records and zones

Integration is simple with first-class language support including:

  • java
  • ruby
  • python
  • go-lang

VinylDNS is currently used in Production managing millions of DNS records.

Table of Contents

Roadmap

See ROADMAP.md for the future plans for VinylDNS.

Code of Conduct

This project and everyone participating in it are governed by the VinylDNS Code Of Conduct. By participating, you agree to this Code. Please report any violations to the code of conduct to vinyldns-core@googlegroups.com.

Developer Guide

Requirements

  • sbt
  • Java 8
  • Python 2.7
  • virtualenv
  • docker
  • wget
  • Protobuf 2.6.1

See DEVELOPER_GUIDE.md for instructions on setting up VinylDNS locally.

Project Layout

  • API: the API is the main engine for all of VinylDNS. This is the most active area of the codebase, as everything else typically just funnels through the API. More detail on the API can be provided below.
  • Portal: The portal is a user interface wrapper around the API. Most of the business rules, logic, and processing can be found in the API. The only feature in the portal not found in the API is creation of users and user authentication.
  • Documentation: The documentation is primarily in support of the API.

For more details see the project structure in the Developer Guide.

Contributing

See the Contributing Guide.

Contact

Maintainers and Contributors

The current maintainers (people who can merge pull requests) are:

  • Paul Cleary
  • Nima Eskandary
  • Michael Ly
  • Rebecca Star
  • Britney Wright

See AUTHORS.md for the full list of contributors to VinylDNS.

Credits

VinylDNS would not be possible without the help of many other pieces of open source software. Thank you open source world!

Initial development of DynamoDBHelper done by Roland Kuhn from https://github.com/akka/akka-persistence-dynamodb/blob/8d7495821faef754d97759f0d3d35ed18fc17cc7/src/main/scala/akka/persistence/dynamodb/journal/DynamoDBHelper.scala

Given the Apache 2.0 license of VinylDNS, we specifically want to call out the following libraries and their corresponding licenses shown below.