1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudflareAdvent Calendar 2024

Day 21

octoDNS で Cloudflare のDNS管理をしてみる

Posted at

こちらは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のちょっとした紹介でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?