時間がないのでとりあえず構想だけ考えたいと思ふ
新しくなったConoHaにはAPIから操作のできるDNSがなんと無料でついてくる。無料版が終了するGehirn DNSの乗り換え先としても一部では期待されてるらしい。
VPSを使うついでにこの無料DNSをDDNSとして使うのもいいんじゃないだろうか…
無料ドメインと組み合わせればいい感じに…!!1
ということで構想を練るよ
dDNSなのでそんなに難しいことはしないはず。
- Cronかなんかでクライアントを叩く
- まずは自分のIPアドレスを確認
- APIのTokenをとってくる
- レコード更新する
こんな感じだろうか。至ってシンプル。
エラーチェックとかは使いながら考えれば((
下準備
新ConoHaのアカウントをまだ持っていないならここから登録すれば1000円分クーポンがついてくるけど支払方法を確定させないと(チャージの場合はとりあえずチャージしないと)全機能(DNS含む)は使えないので注意。
また、コンパネからAPIユーザーを作成しておく。
※この記事内で例として表記しているエンドポイントのベースURLはドキュメント内のものをそのまま利用しています。ユーザーにより異なる可能性があるのでコンパネのAPIページに表示されているURLを確認ください。
で、どのAPI叩くの?
1. Token の取得
identity API の /v2.0/tokens にユーザー名、パスワード、テナントIDをドキュメントのようにPOSTする。レスポンスjsonのaccess.token.id
が必要なトークン(これをとりあえず覚えておく)。このトークンは24時間で失効するっぽいのでスクリプト実行毎に発行すればいいかと思ふ。
2. IPアドレスの確認
いきなりここでAPIから離れてしまうが()グローバルIPをなんらかの方法で取得する必要がある。ConoHaのVPSのようなグローバルIPを持つサーバーならip addr
なりなんなりで取ればいいと思うがDDNSをする必要のあるような自宅サーバーとかだと大体NATネットワーク下だったりする。IPアドレスを返すだけのサービスはそこら中にあるのでどれを用いてもいいが例としてhttp://ipaddr.ga/ip
を叩けばIPアドレスが返ってくる2。(注:IPv6も対応しているためIPv6対応環境からだとちゃんとv4指定してやる必要がある3)
3. (初回のみ) ドメイン、レコード作成
ドメインプール、レコードを作成する。この手順はコンパネからやってもいいがもちろんAPIからでもできる。
★ドメイン
https://dns-service.tyo1.conoha.io/v1/domains
にドメイン名(ex:example.com.
)、TTL(多分NSの。省略可)、メールアドレス(ex:admin@example.com
適当に。)をドキュメント参考にJSONでトークンを添えてPOSTする。ここで返ってくるidが今後必要になるので保存する。また、以後このIDを${domain_id}
として扱う。
★レコード
https://dns-service.tyo1.conoha.io/v1/domains/${domain_id}/records
にレコード名(ex: foo.example.com.
)、レコードタイプ(A
)、レコード値(IPアドレス)、TTL(今回はDDNSなので短めに)とトークンを添えてドキュメント参考にPOSTする。
このレスポンスのIDは今後必要になるので保存する。また、以後このUUIDを${record_id}
として扱う。
4. レコード更新
これが毎回のメイン。
https://dns-service.tyo1.conoha.io/v1/domains/${domain_id}/records/${record_id}
に変更する必要のある値(つまりレコード値(data
))のみをトークンを添えてドキュメント参考にPUTする。
つまりBodyは{"data":"192.0.2.5"}
のような感じでいい。
変更する必要がない場合は投げなくてもいいかもしれないけど…そこは好きにしよう。
とりあえずこんな感じ。やることは至って単純なのでシェルスクリプトでも簡単にできそう。もちろん得意の言語で書けば早いんだけど。
ということで今回はここまで。続きは書くかもしれないし書かないかも。()
新ConoHaではほぼすべての操作はAPIからできるようになったらしいけど思ったよりも簡単に扱えそう。メールサーバーなんてどうせ…とか思ったりもしたけどWebhook設定できるらしいし試してみてもいいかも!
さて、ConoHaの新規登録は是非こちらから。1000円分のクーポンが付きます。