概要
OpenStack Queens は API のバージョンが v3 になっています
今回は Ruby SDK を使ってコールしてみました
環境
- CentOS 7.4 64bit
- packstack 12.0.0
- OpenStack Queens (API v3.10)
- Ruby 2.4.1p111
- openstack 3.3.17 (gem)
インスタンスの一覧を取得する
require 'openstack'
compute = OpenStack::Connection.create({
:username => "demo",
:api_key=> "b44ae9c293214e6d",
:auth_method=> "password",
:auth_url => "http://192.168.100.1:5000/v3",
:authtenant_name => "demo",
:service_type=> "compute",
:is_debug => false,
:project_name => "demo",
:project_domain_name => "default"
})
p compute.servers
前半は認証になります
ID/PW での認証ですが、それ以外に認証用の URL やテナント名サービスタイプなどが必要になります
インスタンスの一覧を取得する場合は compute
を設定します
他には compute, ec2, identity, image, network, or volume
が指定できるようです
ポイントはパラメータの以下 2 つ :project_name
, :project_domain_name
です
この 2 つを付与しないと Password authentication with scoped authorization
と呼ばれる scope パラメータ付きのレスポンスが返ってこないため認証エラーとなってしまいます
インスタンスの作成
認証部分に関しては上記を同じです
ret = compute.create_server(
:name => "test2",
:imageRef => compute.images.first[:id],
:flavorRef => compute.flavors.first[:id],
:security_groups => [ compute.security_groups.flatten.first ]
)
pp ret
各パラメータはとりあえず先頭のものを使っています
必要であれば配列 or ハッシュを探索してください
インスタンスの削除
server = compute.get_server "33f686df-ce67-4779-aefd-a6ff8fae3598"
puts server.delete!
id
の部分はインスタンスの一覧で取得できる id
を使ってください
openstack の場合インスタンスが起動していても削除できます
最後に
OpenStack の API を Ruby から試してみました
とりあえずインスタンス関係の API をコールしましたが他にも機能ごとに API があるので興味があれば試してみてください
0 件のコメント:
コメントを投稿