docker-machine に ConoHa VPS を登録してみた

2015-10-08追記

こっちのが正確

追記終わり

docker-machine に ConoHa 用ドライバないかなーとツイートしたところ、 OpenStack ドライバで(ほぼ)イケるというリプライを頂いたので試してみました。

ConoHa の API を使っているので ConoHaのAPIレビューキャンペーン に応募する記事として書きます。
もちろん API を使用するので、旧アカウントではなく新アカウントを取得しておく必要があります。

今回試している環境は以下の通り

  • debian 8.2
  • docker 1.6.2
  • docker-machine 0.4.0
  • ConoHa VPS 新アカウント

現在では IPv6 でインターネット接続してる状態の方がいいようです。
IPv6 接続が可能な方の記事待ちの方がいいかもしれません。

もっと簡単にできるかもしれませんが、今回試した手順は以下の通りです。

docker-machine で叩くコマンド

最初に docker-machine に渡すオプションを確認しておきます。
OpenStack ドライバのドキュメント からひっぱっています。

$ docker-machine create --driver openstack \
--openstack-auth-url https://identity.tyo1.conoha.io/v2.0/tokens \
--openstack-tenant-id %テナントID% \
--openstack-username %API ユーザー名% \
--openstack-password %API パスワード% \
--openstack-flavor-id %VM のプラン% \
--openstack-image-id %VM イメージ ID% \
conoha

最後の conoha は docker-machine の名前なので適当に付けてよさそうです。

順番に見ていきましょう。

テナント ID / API ユーザー名 / API パスワード

テナント ID と API ユーザー名、 API パスワードはコントロールパネルから取得、設定できます。

f:id:k-side:20150929093514p:plain

API ユーザーを作成していない場合はここで作成しておきます。

VM のプラン

ConoHa API にアクセスして VM のプラン(=flavor) 一覧を取得します。
一覧の取得にはアクセストークンが必要になるので、まずはトークンの発行を行います。

$ curl -i -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"%API ユーザー名%","password":"%API パスワード%"},"tenantId":"%テナント ID%"}}' \
https://identity.tyo1.conoha.io/v2.0/tokens

成功するとレスポンスが返ってくるので、 accesstoken の中にある id としてアクセストークンが格納されているので、コイツをコピーしておきます。

続いてプランの取得を行います。
プランの一覧取得を叩けば OK です。

# curl -i -X GET \
-H "Accept: application/json" \
-H "X-Auth-Token: %アクセストークン%" \
https://compute.tyo1.conoha.io/v2/%テナント ID%/flavors

返ってきたレスポンスから適当なプランの id をコピーしておきます。これが VM のプランになります。
nameg-Xgb となっているので、 X の部分がメモリのサイズになっているものと想像しています。
今回は nameg-1gb とある メモリ 1GB プランの id を使いました。

VM イメージ ID

これは自分で保存した VM のイメージというではなく、テンプレート OS のイメージのようです。
API からイメージ一覧取得を行います。

# curl -i -X GET \
-H "Accept: application/json" \
-H "X-Auth-Token: %アクセストークン%" \
https://compute.tyo1.conoha.io/v2/%テナント ID%/images

ここでも返ってきたレスポンスから適当なイメージを選びます。
name にそれっぽい名前が付いているので、使いたい OS の id をコピーします。
今回は CentOS 6.7 の64ビットを選択しました。

docker-machine create を実行

必要な情報が集まったので docker-machine create を行います。

$ docker-machine create --driver openstack \
--openstack-auth-url https://identity.tyo1.conoha.io/v2.0/tokens \
--openstack-tenant-id %テナントID% \
--openstack-username %API ユーザー名% \
--openstack-password %API パスワード% \
--openstack-flavor-id %VM のプラン% \
--openstack-image-id %VM イメージ ID% \
conoha

実行したコンソールでは Creating machine... と表示され、VPS のコントロールパネルでは VM が作成されたことがわかります。

f:id:k-side:20150929102328p:plain

VM の用意ができるまでちょっと時間がかかるので清楚可愛いこのはちゃんの壁紙を見ながら待つのが良いと思います。

プロンプトに帰ってきたら docker-machine ls で確認できると思います。

$ docker-machine ls
NAME     ACTIVE   DRIVER      STATE     URL                SWARM
conoha            openstack   Running   tcp://%IP%8:2376 

現状、 URL が IPv6 で返ってくるのでインターネット接続が IPv6 でないと操作できないっぽい(?)のでここまでしかやっていません。

その他の操作

VPSVM を停止させるには stop を、削除するには rm を使えば OK です。

$ docker-machine stop conoha 
Stopping OpenStack instance...           MachineId=%id%
$ docker-machine rm conoha
Deleting OpenStack instance...
Successfully removed conoha

f:id:k-side:20150929105745p:plain

終わり

API を使えるようになっていたのでこんなこともできるようになったんですね。

ConoHa VPS では時間課金もあるので、docker-machine で使えると便利さ倍増です。

f:id:k-side:20150929111237p:plain