
dnscontrol v5.0.0-rc9
DNSのためのインフラストラクチャ・アズ・コード!
DNSControl
DNSControl は DNS のための Infrastructure as Code です。 JavaScript 互換のフル機能の設定言語に加え、AWS Route 53、Cloudflare、Gandi などの DNS プロバイダー API と通信する「プラグイン」を備えています。同じ DNS レコードを 複数のプロバイダーに送信できます。Go が動作する環境(Linux、macOS、Windows)であれば どこでも動作します。プロバイダーモデルは拡張可能であるため、さらに多くの プロバイダーを追加できます。
例
dnsconfig.js:
// define our registrar and providers
var REG_NAMECOM = NewRegistrar("ndc_main");
var DSP_ROUTE53 = NewDnsProvider("r53_main");
D("example.com", REG_NAMECOM, DnsProvider(DSP_ROUTE53),
A("@", "1.2.3.4"),
CNAME("www","@"),
MX("@",5,"mail.myserver.com."),
A("test", "5.6.7.8")
)
dnscontrol preview を実行すると、プロバイダー(ここではレジストラとして name.com、DNS ホストとして route 53)と通信し、どのような変更が必要かを判断します。
dnscontrol push を実行すると、プロバイダーに対してそれらの変更が行われ、DNS レコードが正しく更新されます。
DNSControl を実行する最も簡単な方法は、Docker コンテナを使用することです:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
はじめに
最も手早く始める方法は dnscontrol init です。対話形式のウィザードが DNS プロバイダーとレジストラを尋ね、認証情報を検証し、ゾーンに既に存在するレコードを含めて動作する creds.json と dnsconfig.js を書き出します。
完全な手順については、ドキュメントサイトの Getting Started ページを参照してください。
DNS データを完全に「GitOps」で管理したいですか? スターターリポジトリ dns-config をクローンして始めましょう!
対応プロバイダー
DNSControl は 68 の DNS プロバイダーとレジストラをサポートしています:
¹レジストラ機能もサポート ²レジストラのみ
利点
- BIND ゾーンファイルを編集するよりもエラーが起きにくい。
- Web ポータルでボタンをクリックするよりも再現性が高い。
- DNS プロバイダー間の切り替えが簡単: DNSControl 言語は ベンダー非依存です。これを DNS ゾーンレコードの維持に使用すれば、 DNS プロバイダー間を簡単に切り替えられます。実際、DNSControl は DNS レコードを複数のプロバイダーにアップロードするため、 一方でテストしながら他方へ切り替えることができます。私たちは 3 年間で 3 回プロバイダーを切り替えましたが、DNS レコードを 失ったことは一度もありません。
- DNS に CI/CD の原則を適用! StackOverflow は DNSControl 設定を Git で管理し、CI システムを使って変更を展開しています。 DNS 情報を VCS に保持することで完全な履歴が得られます。CI を 使うことでユニットテストやシステムテストを含められます。MX レコードの末尾に "." を付け忘れたことを覚えていますか? Tom が そのミスをしないようにするテストを含めて以来、その問題は 起きていません……二度と。
- (GitOps)PR ベースの更新を採用。 開発者が更新を PR として 送信できるようにし、承認前にレビューできます。
- 変数で時間を節約! IP アドレスを定数に代入し、その変数名を ファイル全体で使用します。IP アドレスをグローバルに変更する 必要がありますか? 変数を変更して「再コンパイル」するだけです。
- マクロ! SPF レコード、MX レコード、その他の繰り返しデータを 一度定義し、すべてのドメインで再利用できます。
- 単一の信頼できる情報源から Cloudflare を制御。 DNSControl ファイルから直接 Cloudflare プロキシ(「オレンジ色の雲」ボタン) を有効/無効にできます。
- 変換やその他の機能で類似ドメインを同期。 あるドメインが 別のドメインのフィルタリング版であるべき場合、簡単に設定できます。
- 拡張可能! すべての DNS プロバイダーはプラグインとして書かれています。 新しいプラグインの作成は非常に簡単です。
インストール
DNSControl は macOS、Linux、Windows 用のパッケージ、またはソースコードからインストールできます。公式の手順を参照してください。
GitHub Actions (GHA) 経由
公式の GitHub Action は github.com/dnscontrol/dnscontrol-action です。
他にも以下のようなものが作成されています: