mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-09-20 06:46:19 +08:00
Update README.md (#689)
* Update README.md Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
parent
58569c1253
commit
fa160b7202
90
README.md
90
README.md
|
@ -4,35 +4,38 @@
|
|||
[![Gitter chat](https://badges.gitter.im/dnscontrol/Lobby.png)](https://gitter.im/dnscontrol/Lobby)
|
||||
[![Google Group chat](https://img.shields.io/badge/google%20group-chat-green.svg)](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
|
||||
software that processes the DSL and pushes the resulting zones to
|
||||
DNS providers such as Route53, Cloudflare, and Gandi. It can talk
|
||||
to Microsoft Active Directory and it generates the most beautiful
|
||||
BIND zone files ever. It runs anywhere Go runs (Linux, macOS,
|
||||
DNS providers such as Route53, Cloudflare, and Gandi. It can send
|
||||
the same DNS records to multiple providers. It even generates
|
||||
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.
|
||||
|
||||
Currently supported DNS providers:
|
||||
- AWS Route 53
|
||||
- Active Directory
|
||||
- Azure DNS
|
||||
- BIND
|
||||
- Cloudflare
|
||||
- ClouDNS
|
||||
- DigitalOcean
|
||||
- Cloudflare
|
||||
- DNSimple
|
||||
- DigitalOcean
|
||||
- Exoscale
|
||||
- Gandi
|
||||
- Google
|
||||
- Google DNS
|
||||
- HEXONET
|
||||
- Internet.bs
|
||||
- Linode
|
||||
- Namecheap
|
||||
- Name.com
|
||||
- NS1
|
||||
- Route 53
|
||||
- Name.com
|
||||
- Namecheap
|
||||
- OVH
|
||||
- OctoDNS
|
||||
- OpenSRS
|
||||
- SoftLayer
|
||||
- Vultr
|
||||
- OVH
|
||||
|
||||
At Stack Overflow, we use this system to manage hundreds of domains
|
||||
and subdomains across multiple registrars and DNS providers.
|
||||
|
@ -68,43 +71,46 @@ See [Getting Started](https://stackexchange.github.io/dnscontrol/getting-started
|
|||
|
||||
# Benefits
|
||||
|
||||
* Editing zone files is error-prone. Clicking buttons on a web
|
||||
page is irreproducible.
|
||||
* Switching DNS providers becomes a no-brainer. The DNSControl
|
||||
language is vendor-agnostic. If you use it to maintain your DNS
|
||||
zone records, you can switch between DNS providers easily. In fact,
|
||||
DNSControl will upload your DNS records to multiple providers, which
|
||||
means you can test one while switching to another. We've switched
|
||||
providers 3 times in three years and we've never lost a DNS record.
|
||||
* Adopt CI/CD principles to DNS! At StackOverflow we maintain our
|
||||
DNSControl configurations in Git and use our CI system to roll out
|
||||
changes. Keeping DNS information in a VCS means we have full
|
||||
history. Using CI enables us to include unit-tests and system-tests.
|
||||
Remember when you forgot to include a "." at the end of an MX record?
|
||||
We haven't had that problem since we included a test to make sure
|
||||
Tom doesn't make that mistake... again.
|
||||
* Variables save time! Assign an IP address to a constant and use
|
||||
the variable name throughout the file. Need to change the IP address
|
||||
globally? Just change the variable and "recompile."
|
||||
* Macros! Define your SPF records, MX records, or other repeated
|
||||
data once and re-use them for all domains.
|
||||
* Control Cloudflare from a single location. Enable/disable
|
||||
Cloudflare proxying (the "orange cloud" button) directly from your
|
||||
DNSControl files.
|
||||
* Keep similar domains in sync with transforms and other features.
|
||||
If one domain is supposed to be the same
|
||||
* It is extendable! All the DNS providers are written as plugins.
|
||||
Writing new plugins is very easy.
|
||||
* **Less error-prone** than editing a BIND zone file.
|
||||
* **More reproducible** than clicking buttons on a web portal.
|
||||
* **Easily switch between DNS providers:** The DNSControl language is
|
||||
vendor-agnostic. If you use it to maintain your DNS zone records,
|
||||
you can switch between DNS providers easily. In fact, DNSControl
|
||||
will upload your DNS records to multiple providers, which means you
|
||||
can test one while switching to another. We've switched providers 3
|
||||
times in three years and we've never lost a DNS record.
|
||||
* **Adopt CI/CD principles to DNS!** At StackOverflow we maintain our
|
||||
DNSControl configurations in Git and use our CI system to roll out
|
||||
changes. Keeping DNS information in a VCS means we have full
|
||||
history. Using CI enables us to include unit-tests and
|
||||
system-tests. Remember when you forgot to include a "." at the end
|
||||
of an MX record? We haven't had that problem since we included a
|
||||
test to make sure Tom doesn't make that mistake... again.
|
||||
* **Adopt PR-based updates.** Allow developers to send updates as PRs,
|
||||
which you can review before you approve.
|
||||
* **Variables save time!** Assign an IP address to a constant and use the
|
||||
variable name throughout the file. Need to change the IP address
|
||||
globally? Just change the variable and "recompile."
|
||||
* **Macros!** Define your SPF records, MX records, or other repeated data
|
||||
once and re-use them for all domains.
|
||||
* **Control Cloudflare from a single source of truth.** Enable/disable
|
||||
Cloudflare proxying (the "orange cloud" button) directly from your
|
||||
DNSControl files.
|
||||
* **Keep similar domains in sync** with transforms and other features. If
|
||||
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
|
||||
|
||||
## 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`
|
||||
|
||||
dnscontrol should be installed in $GOPATH/bin
|
||||
dnscontrol will be installed in $GOPATH/bin
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
## More info at our web site
|
||||
|
||||
[https://stackexchange.github.io/dnscontrol/](https://stackexchange.github.io/dnscontrol/)
|
||||
|
|
Loading…
Reference in a new issue