2021-12-15 16:26:41 -05:00
[](https://github.com/vinyldns/vinyldns/releases/latest)
2022-02-09 14:20:03 -05:00
[](https://hub.docker.com/r/vinyldns/api/tags?page=1& ordering=last_updated)
[](https://hub.docker.com/r/vinyldns/portal/tags?page=1& ordering=last_updated)
2018-07-27 10:18:29 -04:00
2018-07-31 16:07:36 -04:00
< p align = "left" >
2021-12-08 14:36:00 -05:00
< a href = "https://www.vinyldns.io/" >
2018-07-31 15:03:55 -04:00
< img
alt="VinylDNS"
2020-11-11 08:35:54 -05:00
src="img/vinyldns_optimized.svg"
2018-07-31 15:03:55 -04:00
width="400"
/>
< / a >
< / p >
2018-07-27 10:18:29 -04:00
# VinylDNS
2021-11-02 17:06:24 -04:00
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 ](http://www.comcast.com ). 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.
2018-07-27 10:18:29 -04:00
VinylDNS helps secure DNS management via:
2021-11-02 17:06:24 -04:00
2021-10-15 15:06:04 -04:00
- 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
2018-07-27 10:18:29 -04:00
Integration is simple with first-class language support including:
2021-11-02 17:06:24 -04:00
2021-10-15 15:06:04 -04:00
- Java
- Python
- Go
- JavaScript
2018-07-27 10:18:29 -04:00
## Table of Contents
2021-11-02 17:06:24 -04:00
2021-12-14 14:47:35 -05:00
* [Quickstart ](#quickstart )
- [Quickstart Optimization ](#quickstart-optimization )
* [Things to Try in the Portal ](#things-to-try-in-the-portal )
+ [Verifying Your Changes ](#verifying-your-changes )
+ [Other things to note ](#other-things-to-note )
* [Code of Conduct ](#code-of-conduct )
* [Developer Guide ](#developer-guide )
* [Contributing ](#contributing )
* [Maintainers and Contributors ](#maintainers-and-contributors )
* [Credits ](#credits )
2018-07-27 10:18:29 -04:00
2018-08-07 11:26:43 -04:00
## Quickstart
2021-11-02 17:06:24 -04:00
Docker images for VinylDNS live on Docker Hub at < https: / / hub . docker . com / u / vinyldns / > . To start up a local instance of
VinylDNS on your machine with docker:
1. Ensure that you have [docker ](https://docs.docker.com/install/ )
and [docker-compose ](https://docs.docker.com/compose/install/ )
2018-08-07 11:26:43 -04:00
1. Clone the repo: `git clone https://github.com/vinyldns/vinyldns.git`
1. Navigate to repo: `cd vinyldns`
2021-10-27 13:43:21 -04:00
1. Run `./quickstart/quickstart-vinyldns.sh` . This will start up the api at `localhost:9000` and the portal
at `localhost:9001`
2021-12-08 14:36:00 -05:00
1. See [Things to Try in the Portal ](#things-to-try-in-the-portal ) for getting familiar with the Portal
2021-10-20 09:07:19 -04:00
1. To stop the local setup, run `./utils/clean-vinyldns-containers.sh` .
2018-08-07 11:26:43 -04:00
2021-10-27 13:43:21 -04:00
There exist several clients at < https: / / github . com / vinyldns > that can be used to make API requests, using the
2021-12-14 14:47:35 -05:00
endpoint `http://localhost:9000` .
#### Quickstart Optimization
If you are experimenting with Quickstart, you may encounter a delay each time you run it. This is because the API and
Portal are rebuilt every time you launch Quickstart. If you'd like to cache the builds of the API and Portal, you may
want to first run:
| Script | Description |
|----------------------------|------------------------------------------------------------------------------|
| `build/assemble_api.sh` | This will create the API `jar` file which will then be used by Quickstart |
| `build/assemble_portal.sh` | This will create the Portal `zip` file which will then be used by Quickstart |
Once these scripts are run, the artifacts are placed into the `artifacts/` directory and will be reused for each
Quickstart launch. If you'd like to regenerate the artifacts, simply delete them and rerun the scripts above.
2018-08-07 11:26:43 -04:00
2021-12-08 14:36:00 -05:00
## Things to Try in the Portal
2021-10-27 13:43:21 -04:00
2018-08-07 11:26:43 -04:00
1. View the portal at < http: // localhost:9001 > in a web browser
2021-10-27 13:43:21 -04:00
2. Login with the credentials `professor` and `professor`
3. Navigate to the `groups` tab: < http: // localhost:9001 / groups >
4. Click on the **New Group** button and create a new group, the group id is the uuid in the url after you view the
group
2021-12-14 14:47:35 -05:00
5. Connect a zone by going to the `zones` tab: < http: // localhost:9001 / zones > .
1. Click the `-> Connect` button
2. For `Zone Name` enter `ok` with an email of `test@test.com`
3. For `Admin Group` , choose a group you created from the previous step
4. Leave everything else as-is and click the `Connect` button at the bottom of the form
2021-12-08 14:36:00 -05:00
6. A new zone `ok` should appear in your `My Zones` tab _(you may need to refresh your browser)_
7. You will see that some records are preloaded in the zone already, this is because these records are preloaded in the
2021-10-27 13:43:21 -04:00
local docker DNS server and VinylDNS automatically syncs records with the backend DNS server upon zone connection
2021-12-08 14:36:00 -05:00
8. From here, you can create DNS record sets in the **Manage Records** tab, and manage zone settings and ** *ACL rules***
2021-10-27 13:43:21 -04:00
in the **Manage Zone** tab
2021-12-08 14:36:00 -05:00
9. To try creating a DNS record, click on the **Create Record Set** button under
2021-10-27 13:43:21 -04:00
Records, `Record Type = A, Record Name = my-test-a, TTL = 300, IP Addressess = 1.1.1.1`
2021-12-08 14:36:00 -05:00
10. Click on the **Refresh** button under Records, you should see your new record created
2021-10-27 13:43:21 -04:00
### Verifying Your Changes
2021-11-02 17:06:24 -04:00
VinylDNS will synchronize with the DNS backend. For the Quickstart this should be running on port `19001` on `localhost`
.
2021-10-27 13:43:21 -04:00
To verify your changes, you can use a DNS resolution utility like `dig`
```bash
$ dig @127 .0.0.1 -p 19001 +short my-test-a.ok
1.1.1.1
```
This tells `dig` to use `127.0.0.1` as the resolver on port `19001` . The `+short` just makes the output a bit less
verbose. Finally, the record we're looking up is `my-test-a.ok` . You can see the returned output of `1.1.1.1` matches
the record data we entered.
2018-08-07 11:26:43 -04:00
2021-12-08 14:36:00 -05:00
### Other things to note
2021-10-27 13:43:21 -04:00
1. Upon connecting to a zone for the first time, a zone sync is executed to provide VinylDNS a copy of the records in
the zone
1. Changes made via VinylDNS are made against the DNS backend, you do not need to sync the zone further to push those
changes out
1. 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
1. 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 `quickstart/.env` file before execution.
1. Further configuration can be ac https://www.vinyldns.io/operator/config-portal
& https://www.vinyldns.io/operator/config-api
2018-07-27 10:18:29 -04:00
## Code of Conduct
2021-10-27 13:43:21 -04:00
This project, and everyone participating in it, are governed by the [VinylDNS Code Of Conduct ](CODE_OF_CONDUCT.md ). By
2021-12-14 17:16:30 -05:00
participating, you agree to this Code.
2018-07-27 10:18:29 -04:00
## Developer Guide
2021-10-27 13:43:21 -04:00
2018-07-27 10:18:29 -04:00
See [DEVELOPER_GUIDE.md ](DEVELOPER_GUIDE.md ) for instructions on setting up VinylDNS locally.
## Contributing
2021-10-27 13:43:21 -04:00
2018-07-27 10:18:29 -04:00
See the [Contributing Guide ](CONTRIBUTING.md ).
## Maintainers and Contributors
2021-11-02 17:06:24 -04:00
2018-07-27 10:18:29 -04:00
The current maintainers (people who can merge pull requests) are:
2021-10-15 15:06:04 -04:00
- Ryan Emerle ([@remerle ](https://github.com/remerle ))
2024-05-14 13:01:14 -04:00
- Arpit Shah ([@arpit4ever ](https://github.com/arpit4ever ))
- Nick Spadaccino ([@nspadaccino ](https://github.com/nspadaccino ))
2021-10-15 15:06:04 -04:00
- Jim Wakemen ([@jwakemen ](https://github.com/jwakemen ))
2018-07-27 10:18:29 -04:00
See [AUTHORS.md ](AUTHORS.md ) for the full list of contributors to VinylDNS.
2021-11-02 17:06:24 -04:00
See [MAINTAINERS.md ](MAINTAINERS.md ) for documentation specific to maintainers
2018-08-07 11:26:43 -04:00
2018-07-27 10:18:29 -04:00
## Credits
2021-11-02 17:06:24 -04:00
VinylDNS would not be possible without the help of many other pieces of open source software. Thank you open source
world!
Given the Apache 2.0 license of VinylDNS, we specifically want to call out the following libraries and their
corresponding licenses shown below.
- [logback-classic ](https://github.com/qos-ch/logback )
2021-12-14 14:47:35 -05:00
- [Eclipse Public License 1.0 ](https://www.eclipse.org/legal/epl-v10.html )
2021-11-02 17:06:24 -04:00
- [logback-core ](https://github.com/qos-ch/logback )
2021-12-14 14:47:35 -05:00
- [Eclipse Public License 1.0 ](https://www.eclipse.org/legal/epl-v10.html )
2021-11-02 17:06:24 -04:00
- [h2 database ](http://h2database.com )
2021-12-14 14:47:35 -05:00
- [Mozilla Public License, version 2.0 ](https://www.mozilla.org/MPL/2.0/ )
2021-11-02 17:06:24 -04:00
- [pureconfig ](https://github.com/pureconfig/pureconfig )
2021-12-14 14:47:35 -05:00
- [Mozilla Public License, version 2.0 ](https://www.mozilla.org/MPL/2.0/ )
2021-11-02 17:06:24 -04:00
- [pureconfig-macros ](https://github.com/pureconfig/pureconfig )
2021-12-14 14:47:35 -05:00
- [Mozilla Public License, version 2.0 ](https://www.mozilla.org/MPL/2.0/ )
- [junit ](https://junit.org/junit4/ )
- [Eclipse Public License 1.0 ](https://www.eclipse.org/legal/epl-v10.html )