こちらはCloudflare Advent Calendar 2024 の21日目の記事になります。
昨年から大変お世話になっているCloudflareですが、
ちょっとした小ネタがあったので紹介します。
CloudflareのDNS管理について
みなさんはCloudflareでDNS管理をどのように行っていますでしょうか?
Workersなどを使う際は、結構頻繁にDNSレコードを変更されるかと思います。
他のDNSプロバイダからCloudflare DNS環境に切り替える際、切り戻しなどをどうするかなど、考える事があるかと思います。
こんな時に octoDNS というソフトウェアを使うと、複数のDNSプロバイダ間のゾーン情報を同期したり、
他のDNSプロバイダに移行する際などに、ゾーンの変更履歴をgitなどで柔軟に管理することが出来るようになります。
似たようなソフトウェアとしては Route53用のRoadworker
などもあります。
octoDNS とは
オープンソースのDNS管理用ソフトウェアです。
octoDNSについては、以下の記事が日本語では非常によくまとまっているので詳しい説明は省略させていただきます。
対応するDNSプロバイダ
にあるように、世界中のDNSプロバイダに対応しています。
Cloudflare provider for octoDNS
octoDNSのCloudflareに特化したプロバイダです。
今回はこれを使ってゾーン情報を管理してみます。
存在するCloudflareのゾーン情報を取得してみる
Cloudflare APIトークンの準備
の案内通りに、Cloudflareのコンソールにログインし、API tokenを取得します。
- Page Rules
- DNS
のパーミッションが必要です。
DNSの変更を行わず、シンプルにゾーン情報をgitで管理するだけであればREADのみで問題ありません。
octodns-dump (DNS取得)
管理したいゾーン単位で、DNSのダンプが可能です。
$ octodns-dump --config-file=config.yaml --output-dir=zones/ example.com. cloudflare
のようにすると、YAML形式でゾーン情報を出力できます。
これをgit管理するだけになります。
octodns-sync (DNS変更)
dumpしたYAMLを編集して、変更したいゾーンの差分を確認できます。
octodns-sync はデフォルトで dry-run になっているため、特別なオプション --doit
を付けなければ即座に変更されることはありません。
以下のように変更箇所が確認できます。
********************************************************************************
* example.com.
********************************************************************************
* cloudflare (CloudflareProvider)
* Delete <ARecord A 300, hoge.example.com., ['127.0.0.1']>
* Create <ARecord A 300, hogeex.example.com., ['127.0.0.1']> (zones)
* Summary: Creates=1, Updates=0, Deletes=1, Existing Records=15
********************************************************************************
その他、 octodns-validate
などのコマンドなどもあります。
CI/CDと連携することでRoute53等の複数DNSプロバイダと常に同期をしたり、
変更履歴をSlackと連動させたりすることも出来そうです。
このあたりについては以下の記事などが詳しく説明されています。
make でシンプルに
普段からあまり使っていないと octodns-dump の細かいオプションなどを忘れてしまいがちになるため、
make dump
make sync
だけ覚えればいいように試してみたサンプルが以下になります。
社内ではCloudflareの環境は普段からあまりDNSゾーン情報の変更を行うことはないため、
$ make dump
$ git diff
$ git commit
をするだけでシンプルにDNS変更履歴を管理できるようにしてみました。
これまでは、CloudFront から Cloudflare Workersへの切り替えの際などでは、revert用のCloudFront向けのレコードをダミーとして残しておいたり、DNSレコードのコメント欄をいろいろ活用して運用でカバーしていたのですが、
octodnsを使う事でDNSの変更履歴をgit管理することが出来るようになったので、サクッとrevertなども出来るようになって良さそうです。
以上、octoDNSのちょっとした紹介でした。