DSLimple v1.0.0 Released

ハッピーバレンタインデー!チョコ食べた?僕はまだ。どうも僕です。

DSLimple という、DSL で DNSimple の設定を管理できる CLI ツールを作りました

昨日の記事で、 Fastly を使うために Route53 から DNSimple に zeny.io の DNS を移したんですが、そうなると使えなくなって困るツールがあります。

みんな大好き Roadworker です。Route53 のレコードセットを DSL で記述できて dry run も出来てと最高なツールで、これと CI を組み合わせると PR でマージされたら DNS が更新されるみたいなかなり最高な状況が手に入るヤツなんですが、当たり前のように DNSimple には対応していません。

なので、DNSimple のドメイン設定を DSL で記述できるツール、その名も DSLimple を作りました。この記事書くまでにすでに100回くらいタイポするくらい元サービスの名前との diff が少ない名前にしてしまって今は後悔してるけど、わかりやすいだろ!!!?

使い方は簡単。 gem install dslimple したらまずは dslimple export で現在のドメイン設定を書き出し、あとはそのファイルを編集、 dslimple apply --dry-run で確認、 dslimple apply で反映、を繰り返していくだけです。もちろん、認証情報は先に入力する必要があるのでご注意。

本家(?) roadworker にない機能として追加でつけたのは、 vim / emacs 用の modeline を先頭につけるオプションくらいでしょうか?あとは domain が指定されてるけどドメインがない場合はドメインの購入も自動でやってくれます(登録解除もしてくれる)。新規にドメインを取る時ですら Web にログインしなくてよくなるので、最高っちゃ最高だけど怖いっちゃ怖いのでお気をつけ下さい(--no-addition を指定すると追加系の変更を無視してくれます)。

DSLimple / Roadworker 以降の世界

after dslimple

上記の図の様に、 DNS 設定が GitHub やなんらかの VCS によって管理され、差分が残るようになる、ということ。これはどうでもよさそうに見えて、かなり大きなことです。

誰が変更したのか、どのように、それ以前はどうなっていたのか、などが管理されるようになることで、 DNS の設定が変なの!みたいなトラブルが発生した際の原因調査が格段に効率的になります。

もちろん、手で運用していく上でも変更履歴をどこかで管理する、などの方法で上記の利点が享受可能ですが『実際の設定を記述したものを管理する』に勝る履歴更新漏れ方法はないと思います。

結局 Web で管理したほうが簡単だし……と言う場合や、 DNSimple の便利な機能である Service を活用する場合でも、毎日 CI 上で export したものを自動でコミットしておく、というだけでも『どの日に』問題が起きたかが把握可能になります。

DNSimple は管理が簡単でよく出来たサービスです。だからこそなおのこと、 CLI で操作させてくれよ!!と思うのですが……まあ、今となっては DSLimple がありますから問題ではなく成りましたね ;)

また、 DSLimple をテストする、試しに使う際には DNSimple 公式の sandbox 環境がおすすめです。詳細はこちらのドキュメントから閲覧できます。 PR でのビルド時に反映する反映先としてや、単純に API を使ったアプリケーションの開発時にも使えます。こういうの公式で用意してくれるのほんとありがたい!!最高!!!

このエントリで DNSimple に興味が湧いた人はこのリンクから登録すると、1ヶ月無料で DNSimple を使えるらしいので、試してみてください。

ということで、単に CLI ツール作ったよというだけで長くなりすぎましたがこの辺で。