約束の地

キャロの想い出

ConoHa で API を用いてサーバを追加する方法

使うのは curl だけ

愚直にcurlだけで作ります。

0. 前提

以下、リージョンはすべて「東京」とします。

1. API 用のアカウントを作成する

ここに書いてあるように、「API」のメニューより、パスワードを設定してユーザを作成します。

必要になるのは以下の値ですのでメモっておきます。

  • テナントID
  • エンドポイントのうち、以下のアドレス
    • Identity Service
    • Compute Service

2. トークンを取得

「1.」に示した公式ドキュメントに書いてあるとおりです。以下のコマンドを実行します。

$ curl -i -X POST -H "Accept: application/json" -d '{ "auth": { "passwordCredentials": { "username": "APIユーザーのユーザー名", "password": "APIユーザーのパスワード" }, "tenantId": "テナント情報のテナントID" } }' "Identity ServiceのURLの後ろに/tokensを繋げる"

返ってくる JSON の["access"]["token"]["id"]格納されている値がトークンですのでこれもメモっておきます*1

3. 追加するサーバの「プラン」を決める

「プラン」とはつまりはメモリ量のことです。以下のコマンドを実行すると、利用可能なプランが JSON で返ってきます。

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

返ってきた JSON において、["flavors"][3]["name"] などに格納されているのがプランです。ここに例えば "g-1gb"という値 が入っていれば 1GB のプランになります。希望のプランの id(例えば ["flavors"][3]["id"]の値)をメモっておきます。7efa7469-0d95-4f12-8450-6ae742294681みたいな値です。

4. 追加するサーバに用いる「イメージ」を決める

「3.」と同様にしてサーバ作成時に用いる「イメージ」を決めます。利用可能な「イメージ」の一覧を取得するために、まずは以下のコマンドを実行します。

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

返ってきた JSON において*2、["images"][23]["name"] などに具体的なイメージの名前が格納されています。ここでは Ubuntu 16.04 64bit を選びたいとします。

ここでいったん横道にそれますが、 ["images"][23]["name"] などには "vmi-ubuntu-16.04-amd64-unified" と "vmi-ubuntu-16.04-amd64-unified-20gb" のように、末尾に20gbが付与されているものとそうでない値が存在していると思います。

この違いは、「20gbが付与されているものは 512MBプラン用のイメージ」ということです*3。なので、512MB の「プラン」でサーバを追加する場合は20gbが付与されているものを、そうでない場合は20gbが付与されていないものを選びます。

ここでの例では 1GB のプランを選ぶことにしたいので、イメージとしては "vmi-ubuntu-16.04-amd64-unified" を選ぶことになります。

さて、「3.」と同様にイメージの id を取得します。["images"][23]["id"] のような場所に格納されている値です。"name" が "vmi-ubuntu-16.04-amd64-unified" であるものの id を取得すれば OK です。この id はメモっておきます。

5. サーバを追加する

ここまでの値が取得できているならば、以下のコマンドでサーバが追加できます。リージョンは東京、メモリは1GB、OSはUbuntu 16.04 64bit版 になります。

$ curl -i -X POST -H "Accept: application/json" -H "X-Auth-Token: トークン" -d '{"server": {"adminPass": "APIアカウントのパスワード","imageRef": "イメージのID","flavorRef": "プランのID"}}' https://compute.tyo1.conoha.io/v2/テナントID/servers

無事 200 が返ってきたならば成功です。Webブラウザからの管理画面でサーバが追加されていることを確認してみて下さい。

補足

上記の内容をとAPIドキュメントを見比べれば分かるように、上記の内容は最低限度の実行内容です。現実的にはより細かいオプション指定を行う必要があるでしょう。

*1:有効期限がありますので注意して下さい

*2:めちゃくちゃ大量に返ってきます

*3:ストレージ容量の違いがあるから

Powered by はてなブログ