mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Update README.md (#689)
* Update README.md Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
90
README.md
90
README.md
@ -4,35 +4,38 @@
|
|||||||
[](https://gitter.im/dnscontrol/Lobby)
|
[](https://gitter.im/dnscontrol/Lobby)
|
||||||
[](https://groups.google.com/forum/#!forum/dnscontrol-discuss)
|
[](https://groups.google.com/forum/#!forum/dnscontrol-discuss)
|
||||||
|
|
||||||
DNSControl is a system for maintaining DNS zones. It has two parts:
|
[DNSControl](https://stackexchange.github.io/dnscontrol/) is a system
|
||||||
|
for maintaining DNS zones. It has two parts:
|
||||||
a domain specific language (DSL) for describing DNS zones plus
|
a domain specific language (DSL) for describing DNS zones plus
|
||||||
software that processes the DSL and pushes the resulting zones to
|
software that processes the DSL and pushes the resulting zones to
|
||||||
DNS providers such as Route53, Cloudflare, and Gandi. It can talk
|
DNS providers such as Route53, Cloudflare, and Gandi. It can send
|
||||||
to Microsoft Active Directory and it generates the most beautiful
|
the same DNS records to multiple providers. It even generates
|
||||||
BIND zone files ever. It runs anywhere Go runs (Linux, macOS,
|
the most beautiful BIND zone files ever. It runs anywhere Go runs (Linux, macOS,
|
||||||
Windows). The provider model is extensible, so more providers can be added.
|
Windows). The provider model is extensible, so more providers can be added.
|
||||||
|
|
||||||
Currently supported DNS providers:
|
Currently supported DNS providers:
|
||||||
|
- AWS Route 53
|
||||||
- Active Directory
|
- Active Directory
|
||||||
- Azure DNS
|
- Azure DNS
|
||||||
- BIND
|
- BIND
|
||||||
- Cloudflare
|
|
||||||
- ClouDNS
|
- ClouDNS
|
||||||
- DigitalOcean
|
- Cloudflare
|
||||||
- DNSimple
|
- DNSimple
|
||||||
|
- DigitalOcean
|
||||||
- Exoscale
|
- Exoscale
|
||||||
- Gandi
|
- Gandi
|
||||||
- Google
|
- Google DNS
|
||||||
- HEXONET
|
- HEXONET
|
||||||
- Internet.bs
|
- Internet.bs
|
||||||
- Linode
|
- Linode
|
||||||
- Namecheap
|
|
||||||
- Name.com
|
|
||||||
- NS1
|
- NS1
|
||||||
- Route 53
|
- Name.com
|
||||||
|
- Namecheap
|
||||||
|
- OVH
|
||||||
|
- OctoDNS
|
||||||
|
- OpenSRS
|
||||||
- SoftLayer
|
- SoftLayer
|
||||||
- Vultr
|
- Vultr
|
||||||
- OVH
|
|
||||||
|
|
||||||
At Stack Overflow, we use this system to manage hundreds of domains
|
At Stack Overflow, we use this system to manage hundreds of domains
|
||||||
and subdomains across multiple registrars and DNS providers.
|
and subdomains across multiple registrars and DNS providers.
|
||||||
@ -68,43 +71,46 @@ See [Getting Started](https://stackexchange.github.io/dnscontrol/getting-started
|
|||||||
|
|
||||||
# Benefits
|
# Benefits
|
||||||
|
|
||||||
* Editing zone files is error-prone. Clicking buttons on a web
|
* **Less error-prone** than editing a BIND zone file.
|
||||||
page is irreproducible.
|
* **More reproducible** than clicking buttons on a web portal.
|
||||||
* Switching DNS providers becomes a no-brainer. The DNSControl
|
* **Easily switch between DNS providers:** The DNSControl language is
|
||||||
language is vendor-agnostic. If you use it to maintain your DNS
|
vendor-agnostic. If you use it to maintain your DNS zone records,
|
||||||
zone records, you can switch between DNS providers easily. In fact,
|
you can switch between DNS providers easily. In fact, DNSControl
|
||||||
DNSControl will upload your DNS records to multiple providers, which
|
will upload your DNS records to multiple providers, which means you
|
||||||
means you can test one while switching to another. We've switched
|
can test one while switching to another. We've switched providers 3
|
||||||
providers 3 times in three years and we've never lost a DNS record.
|
times in three years and we've never lost a DNS record.
|
||||||
* Adopt CI/CD principles to DNS! At StackOverflow we maintain our
|
* **Adopt CI/CD principles to DNS!** At StackOverflow we maintain our
|
||||||
DNSControl configurations in Git and use our CI system to roll out
|
DNSControl configurations in Git and use our CI system to roll out
|
||||||
changes. Keeping DNS information in a VCS means we have full
|
changes. Keeping DNS information in a VCS means we have full
|
||||||
history. Using CI enables us to include unit-tests and system-tests.
|
history. Using CI enables us to include unit-tests and
|
||||||
Remember when you forgot to include a "." at the end of an MX record?
|
system-tests. Remember when you forgot to include a "." at the end
|
||||||
We haven't had that problem since we included a test to make sure
|
of an MX record? We haven't had that problem since we included a
|
||||||
Tom doesn't make that mistake... again.
|
test to make sure Tom doesn't make that mistake... again.
|
||||||
* Variables save time! Assign an IP address to a constant and use
|
* **Adopt PR-based updates.** Allow developers to send updates as PRs,
|
||||||
the variable name throughout the file. Need to change the IP address
|
which you can review before you approve.
|
||||||
globally? Just change the variable and "recompile."
|
* **Variables save time!** Assign an IP address to a constant and use the
|
||||||
* Macros! Define your SPF records, MX records, or other repeated
|
variable name throughout the file. Need to change the IP address
|
||||||
data once and re-use them for all domains.
|
globally? Just change the variable and "recompile."
|
||||||
* Control Cloudflare from a single location. Enable/disable
|
* **Macros!** Define your SPF records, MX records, or other repeated data
|
||||||
Cloudflare proxying (the "orange cloud" button) directly from your
|
once and re-use them for all domains.
|
||||||
DNSControl files.
|
* **Control Cloudflare from a single source of truth.** Enable/disable
|
||||||
* Keep similar domains in sync with transforms and other features.
|
Cloudflare proxying (the "orange cloud" button) directly from your
|
||||||
If one domain is supposed to be the same
|
DNSControl files.
|
||||||
* It is extendable! All the DNS providers are written as plugins.
|
* **Keep similar domains in sync** with transforms and other features. If
|
||||||
Writing new plugins is very easy.
|
one domain is supposed to be a filtered version of another, this is
|
||||||
|
easy to set up.
|
||||||
|
* **It is extendable!** All the DNS providers are written as plugins.
|
||||||
|
Writing new plugins is very easy.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
## From source
|
## From source
|
||||||
|
|
||||||
DNSControl can be built with Go version 1.10 or higher. To install, simply run
|
DNSControl can be built with Go version 1.14 or higher. To install, simply run
|
||||||
|
|
||||||
`go get github.com/StackExchange/dnscontrol`
|
`go get github.com/StackExchange/dnscontrol`
|
||||||
|
|
||||||
dnscontrol should be installed in $GOPATH/bin
|
dnscontrol will be installed in $GOPATH/bin
|
||||||
|
|
||||||
## Via packages
|
## Via packages
|
||||||
|
|
||||||
@ -119,3 +125,7 @@ Alternatively, on Mac you can install it using homebrew:
|
|||||||
```
|
```
|
||||||
docker run --rm -it -v $(pwd)/dnsconfig.js:/dns/dnsconfig.js -v $(pwd)/creds.json:/dns/creds.json stackexchange/dnscontrol dnscontrol preview
|
docker run --rm -it -v $(pwd)/dnsconfig.js:/dns/dnsconfig.js -v $(pwd)/creds.json:/dns/creds.json stackexchange/dnscontrol dnscontrol preview
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## More info at our web site
|
||||||
|
|
||||||
|
[https://stackexchange.github.io/dnscontrol/](https://stackexchange.github.io/dnscontrol/)
|
||||||
|
Reference in New Issue
Block a user