Giter Site home page Giter Site logo

tenpaiyomi / vinyldns Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vinyldns/vinyldns

0.0 2.0 0.0 9.42 MB

Vendor agnostic DNS front-end for streamlining DNS operations and enabling self-service for your DNS infrastructure

Home Page: http://vinyldns.io/

License: Apache License 2.0

Shell 0.77% Scala 64.70% Dockerfile 0.05% Python 20.75% CSS 0.34% JavaScript 8.39% HTML 5.01%

vinyldns's Introduction

Join the chat at https://gitter.im/vinyldns Travis build CodeCov

VinylDNS

VinylDNS

VinylDNS is a vendor agnostic front-end for enabling self-service DNS and streamlining DNS operations. VinylDNS manages millions of DNS records supporting thousands of engineers in production at Comcast. The platform provides fine-grained access controls, auditing of all changes, a self-service user interface, secure RESTful 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.

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

Table of Contents

Quickstart

Docker images for VinylDNS live on Docker Hub at https://hub.docker.com/u/vinyldns/dashboard/. To start up a local instance of VinylDNS on your machine with docker:

  1. Ensure that you have docker and docker-compose
  2. Clone the repo: git clone https://github.com/vinyldns/vinyldns.git
  3. Navigate to repo: cd vinyldns
  4. Run bin/docker-up-vinyldns.sh. This will start up the api at localhost:9000 and the portal at localhost:9001 along with their dependencies, ping the API on http://localhost:9000/ping and the portal on http://localhost:9001, and notify you if either failed to start.
  5. To stop the local setup, run ./bin/remove-vinyl-containers.sh from the project root.

Things to try after VinylDNS is running:

  1. View the portal at http://localhost:9001 in a web browser
  2. Login with the credentials testuser and testpassword
  3. Navigate to the groups tab: http://localhost:9001/groups
  4. Click on the New Group button and create a new group
  5. Navigate to the zones tab: http://localhost:9001/zones
  6. Click on the Connect button to connect to zone, the bin/docker-up-vinyldns.sh started up a local bind9 DNS server with a few test zones preloaded, connect to Zone Name = dummy., Email = [email protected], Admin Group = the group you just created. The DNS Server and Zone Transfer Server can be left blank as the test zones use the defaults
  7. This is async, so refresh the zones page to view the newly created zone
  8. Click the View button under the Actions column for the dummy. zone
  9. You will see that some records are preloaded already, this is because these records existed in the bind9 server and VinylDNS automatically syncs records with the backend DNS server upon zone connection
  10. From here, you can create DNS record sets in the Manage Records tab, and manage zone settings and ACL rules in the Manage Zone tab
  11. To try creating a DNS record, click on the Create Record Set button under Records, Record Type = A, Record Name = my-test-a, TTL = 300, IP Addressess = 1.1.1.1
  12. Click on the Refresh button under Records, you should see your new record created

Things to note:

  1. Upon connecting to a zone for the first time, a zone sync is ran to provide VinylDNS a copy of the records in the zone
  2. Changes made via VinylDNS are made against the DNS backend, you do not need to sync the zone further to push those changes out
  3. If changes to the zone are made outside of VinylDNS, then the zone will have to be re-synced to give VinylDNS a copy of those records
  4. If you wish to modify the url used in the creation process from http://localhost:9000, to say http://vinyldns.yourdomain.com:9000, you can modify the bin/.env file before execution.
  5. A similar docker/.env can be modified to change the default ports for the Portal and API. You must also modify their config files with the new port: https://www.vinyldns.io/operator/config-portal & https://www.vinyldns.io/operator/config-api

For details regarding setup and configuration of the dev environment, see the Developer Guide.

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 [email protected].

Developer Guide

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

Contributing

See the Contributing Guide.

Roadmap

See ROADMAP.md for the future plans for VinylDNS.

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.

See MAINTAINERS.md for documentation specific to maintainers

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.

vinyldns's People

Contributors

annelisebox avatar britneywright avatar davidmargolin avatar dunn5 avatar kristakhare avatar mfirry avatar michael-smith avatar mitruly avatar nimaeskandary avatar norsegaud avatar pauljamescleary avatar rebstar6 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.