1
1

More than 5 years have passed since last update.

ConohaでAPIを使ってみる

Last updated at Posted at 2019-05-03

Overview

- 目的

terraform使ってみたい。(in conoha)
しかし、その前にconohaのAPIを使ってみた方が良いと思った(直感
なので、先人に倣いconohaのAPIを使ってみる。

- このページでなんとなく判ること
  • conohaVPSでAPIを実行出来る
  • conohaVPSで必要最低限のinstance生成が行える
- Reference
- 結論

API実行はやはり面倒だなぁ。という感じだった。
CLIは個人の方が作ってるけれども、自動系ならterraformを使えば良さそうなので意欲湧いた。

API実行の準備

- API使うために情報を集める

手順はConohaのページに書かれてます。
APIを実行するにあたり、トークンを取得する必要がある。
このため、トークンを取得するためにはConohaのIdentifyのエンドポイントにRESTを飛ばす必要がある。
その際、色々情報(user/password/endpoint/tenantid)を載せて飛ばす必要がある。
この情報の準備、収集をする

★注意

user/passwordはAPI用に新たに準備するもの。ログインID/Passwordではない。

- トークン取得

今後色々使う情報なので変数に入れておくと無難。こんな感じで変数に確保しました。

sample_get_token
TOKEN=`curl -s -X POST -H "Accept: application/json" \
-d '{ "auth": { "passwordCredentials": { "username": "'"$C_USER_NAME"'", "password": "'"$C_PASSWORD"'" }, "tenantId": "'"$C_TENANT_ID"'" } }' \
https://identity.tyo2.conoha.io/v2.0/tokens \
| jq ".access.token.id"| sed -e s/\"//g`;echo $TOKEN

試しにAPIをいくつか実行してみよう

conohaに既にConoHa API Documantationがあるのでこれを見ながらいくつか打ってみる。

- Compute API v2 (nova list相当)

自分のinstanceの一覧を表示。(今は1台のみ有る)

curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://compute.tyo2.conoha.io/v2/$C_TENANT_ID/servers | jq
API_result
azuki@maki-mac:~/Deployments/terraform$ curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://compute.tyo2.conoha.io/v2/$C_TENANT_ID/servers | jq
{
  "servers": [
    {
      "id": "9f5a09a3-ae33-410a-bf7a-f22810747aXX",
      "links": [
        {
          "href": "https://compute.tyo2.conoha.io/v2/5a04833c9fbe42709cc3fcbdcaa4XXXX/servers/9f5a09a3-ae33-410a-bf7a-f22810747aXX",
          "rel": "self"
        },
        {
          "href": "https://compute.tyo2.conoha.io/5a04833c9fbe42709cc3fcbdcaa4XXXX/servers/9f5a09a3-ae33-410a-bf7a-f22810747aXX",
          "rel": "bookmark"
        }
      ],
      "name": "118-27-28-241"
    }
  ]
}
- Compute API v2 (nova show相当)
curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://compute.tyo2.conoha.io/v2/$C_TENANT_ID/servers/<INSTANCE_ID> | jq
result
azuki@maki-mac:~/Deployments/terraform$ curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://compute.tyo2.conoha.io/v2/$C_TENANT_ID/servers/9f5a09a3-ae33-410a-bf7a-f22810747aXX | jq
{
  "server": {
    "status": "ACTIVE",
    "updated": "2019-05-03T05:46:13Z",
    "hostId": "7ee0386cf0299e07acbff410bd6792542e30aaaccf9ee66cdbdXXXXX",
    "OS-EXT-SRV-ATTR:host": "cn-d12141.g1.tyo2.v4",
~snip~
    "image": {
      "id": "de03b36d-21d8-4e58-9b8e-24581dda86fa",
      "links": [
        {
~snip~
    "flavor": {
      "id": "d92b02ce-9a4f-4544-8d7f-ae8380bc08e7",
      "links": [
        {
          "href": "https://compute.tyo2.conoha.io/5a04833c9fbe42709cc3fcbdcaa4XXXX/flavors/d92b02ce-9a4f-4544-8d7f-ae8380bc08XX",
          "rel": "bookmark"
        }
~snip~
      "backup_set": "0"
    }
  }
}

instance作成する前に

APIを実行してinstanceを作成する上で、最低限以下の情報が必要になる。
- image_id(使用するImage情報, ubuntu,centOS等)
- flavor_id(使用するプラン情報, 1CPU-512mb等)

- 結果として

以下のAPIを実行して2つのIDを決めました

  • image_id : de03b36d-21d8-4e58-9b8e-24581dda86fa(ubuntu16.04)
  • flavor_id : d92b02ce-9a4f-4544-8d7f-ae8380bc08e7(512mb)
- ImageListを取得してみる

どこかにイメージのリストが転がってないか見てみたけど見つからなかったのでAPIを打った。
この結果からさらにgrepすると良いと思う。(本当は公式でCLIが提供されてたら嬉しい。)

command
curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://$C_EP_IMAGE/v2/images | jq . | egrep "\"id\"|\"name\""
- flavorlistを取得してみる
command
curl -s -X GET -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" https://$C_EP_COMPUTE/flavors | jq

insntaceを作成

command
url -s -X POST -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{ "server": { "imageRef": "de03b36d-21d8-4e58-9b8e-24581dda86fa", "flavorRef": "d92b02ce-9a4f-4544-8d7f-ae8380bc08e7", "adminPass": "XXXXX"} }' https://${C_EP_COMPUTE}/servers | jq
result
azuki@maki-mac:~/Deployments/terraform$ curl -s -X POST -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -d '{ "server": { "imageRef": "de03b36d-21d8-4e58-9b8e-24581dda86fa", "flavorRef": "d92b02ce-9a4f-4544-8d7f-ae8380bc08e7", "adminPass": "XXXXXX"} }' https://${C_EP_COMPUTE}/servers | jq
{
  "server": {
    "security_groups": [
      {
        "name": "default"
      }
    ],
    "OS-DCF:diskConfig": "MANUAL",
    "id": "c4419fd2-e36a-4074-ab9a-89a46612XXXX",
    "links": [
      {
        "href": "https://compute.tyo2.conoha.io/v2/5a04833c9fbe42709cc3fcbdcaa41XXXXX/servers/c4419fd2-e36a-4074-ab9a-89a46612XXXXX",
        "rel": "self"
      },
      {
        "href": "https://compute.tyo2.conoha.io/5a04833c9fbe42709cc3fcbdcaa4XXXX/servers/c4419fd2-e36a-4074-ab9a-89a46612XXXXX",
        "rel": "bookmark"
      }
    ],
    "adminPass": "XXXXX"
  }
}
azuki@maki-mac:~/Deployments/terraform$

おまけ

rcファイル作成した方が良さそう

途中から面倒なのでrcファイル作って実施してました。

rc_file
C_TENANT_ID=<TENANT_NAME>
C_USER_NAME=<API USER>
C_PASSWORD=<API PASSWORD>
C_EP_COMPUTE=compute.tyo2.conoha.io/v2/${C_TENANT_ID}
C_EP_IMAGE=image-service.tyo2.conoha.io
C_EP_VOLUME=block-storage.tyo2.conoha.io/v2/${C_TENANT_ID}
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1