前提
vagrant-conoha
を用いてプロビジョニングする$ vagrant ssh-config
コマンドで返ってきた、ConoHa のインスタンスの IPアドレス を取得する- 上記で取得した IPアドレス を用いて VALUE-DOMAIN の DDNS 設定を叩く
説明
順番に説明します。一番最初の説明は飛ばして、ConoHa にインスタンスが建ったとします。
1. ConoHa のインスタンスの IPアドレス を取得する
次のコマンドを実行すると、ConoHa のインスタンスの IPアドレス が取得できます。
$ vagrant ssh-config | grep -oP [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ 123.123.123.123
2. VALUE-DOMAIN の DDNS 設定を叩く
詳しくは後述しますが、VALUE-DOMAIN の特定の URI を GET で叩くと、DDNS の設定がすぐに反映されます*1。例えば、以下のような URI です。
https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=yourdomain.name&p=yourpassword&h=subdomain&i=123.123.123.123
URI の構成の詳しい説明は公式ページに掲載されています。
3. 「1.」および「2.」の操作をシェルスクリプトにする
なぐり書きですが、以下のようなシェルスクリプトができるかと思います。
#/bin/bash value_domain_base_uri="https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=yourdomain.name&p=yourpassword&h=subdomain&i=" conoha_ip_address=`vagrant ssh-config | grep -oP [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+` access_uri=$value_domain_base_uri$conoha_ip_address curl --get $access_uri
あとはこれを実行すれば自動で結びつきができます*2。プロビジョニングに組み込めば、労せずドメインと結び付けられますね。
補足
その1
「ダイナミックDNS」の設定画面への遷移がすこぶる分かりにくいのでここで説明しておきます。
- 「画面右上のコンパネ」→「マイページ」でログインする
- 画面左カラムの「ドメイン」→「ドメインの設定操作(登録済みドメイン一覧)」を選ぶ
- 登録済みのドメインが出てきて、その隣に色のついたいくつかのアイコンが出てくるので「ダイナミック」をクリックする
これで、ダイナミックDNSの設定画面にいけます。
その2
本記事のダイナミックDNSを扱うためにはいくつかの準備が必要です。 「ダイナミックDNS設定画面」の下方にある、「ダイナミックDNS機能」のところを「有効」にする(チェックを入れる)必要があります。チェックを入れたら「変更」ボタンを押します。
その3
さらに上記の変更が終わった後に、以下の画面遷移をします。 - 「画面右上のコンパネ」→「マイページ」でログインする - 画面左カラムの「ドメイン」→「ドメインの設定操作(登録済みドメイン一覧)」を選ぶ - 登録済みのドメインが出てきて、その隣に色のついたいくつかのアイコンが出てくるので「ネームサーバー」をクリックする - 「当サービス内のネームサーバー(ns1~5.value-domain.com)を利用する」をクリックして設定を変更し、「保存する」
その4
最後に、「URIを叩くことで変更したい項目」については、以下の操作が予め必要です。
- 「画面右上のコンパネ」→「マイページ」でログインする
- 画面左カラムの「ドメイン」→「ドメインの設定操作(登録済みドメイン一覧)」を選ぶ
- 登録済みのドメインが出てきて、その隣に色のついたいくつかのアイコンが出てくるので「DNS/URL」をクリックする
上記の結果出てきたDNS設定の内容に、「URI経由で変更したい内容を予め入力しておく必要があります」。
例えば、a www 123.123.123.123
という項目を URI経由で a www 111.222.333.222
にしたい場合、ダミーとして、前者の項目を入れておく必要があります。他の種別(「MX、CNAME、*」)についても同様です。
まっさらなデータの中に URI経由 で新規にデータを作ることができないのです。
その5
もっと簡単な方法があるって?たまにはこんな方法もいいもんでしょう*3
その6
肝心の反映(浸透)時間ですが、もちろん環境によるとは思いますが、30分は見ておいたほうがいいと思います。