OpenStack API

6,311 views
5,964 views

Published on

OSS推進フォーラム 若手勉強会 2012/10/26 の資料です。

Published in: Education
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,311
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
124
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

OpenStack API

  1. 1. OpenStack API 吉山あきら akirayoshiyama@gmail.com
  2. 2. 目次● OpenStack 各コンポーネントの API● OpenStack API● OpenStack クライアントライブラリ
  3. 3. OpenStack 各コンポーネントの API
  4. 4. Nova の API標準装備の API● OpenStack Compute API (v2)● Amazon EC2 互換 API ※Grizzly リリースで廃止予定● Amazon EC2 互換 Metadata API● OpenStack Volume API (v1) ※Grizzly リリースで廃止予定サードパーティ API● Cloud Infrastructure Management Interface ( CIMI ) – https://github.com/osaddon/cimi/● Open Cloud Computing Interface (OCCI) – https://github.com/tmetsch/occi-os
  5. 5. Swift の API標準装備の API● OpenStack Object Storage API (v2.0)サードパーティ API● Amazon S3 互換 API – https://github.com/fujita/swift3● Cloud Data Management Interface (CDMI) – https://github.com/osaddon/cdmi
  6. 6. その他のコンポーネントの APIGlance● OpenStack Image API (v1.1)Keystone● OpenStack Identity API (v2.0)Quantum● OpenStack Networking API (v2.0)Cinder● OpenStack Volume API (v1.0) ※Nova の Volume API と同一
  7. 7. OpenStack API
  8. 8. OpenStack API 登場以前Nova は当初 Amazon EC2 互換 API のみ● 標準 CLI は Eualyptus 用の Euca2ools独自の機能拡張をする際、 EC2 互換 API では…● クライアントツールを改造/独自開発する必要がある● 結果的に API の互換性が低下するOpenStack プロジェクトで自由に拡張可能な RESTful API を開発する事にした
  9. 9. OpenStack API● Rackspace のクラウドサービス API を参考 ● 比較的素直な RESTful API リソースの create/read/update/delete が基本● ユーザ認証とサービス操作で別の URL を使用 ● ユーザ認証… Keystone サービス API の URL ● サービス操作… Keystone から返されたエンドポイント URL
  10. 10. OpenStack API のユーザ認証 サービス API ( 5000/TCP ) ① ユーザ名、 パスワード→ Keystone ←② エンドポイント、 トークン Nova 等
  11. 11. OpenStack API のサービス操作 ③ トークン、操作→ Keystone 管理 API ↓⑤ ロール ( 35357/TCP ) ④ トークン↑ Nova 等 ←⑥ 操作結果 OpenStack Compute API ( 8774/TCP )
  12. 12. エンドポイントとトークンエンドポイント 各種 OpenStack API の URL (全コンポーネントの URL が一度に提供される)トークン 各種 OpenStack API のユーザ認証で ユーザ名・パスワードの代わりに使用する文字列 – 有効期限がある – HTTP のセッションクッキーと同様
  13. 13. 参考: Amazon EC2 互換 API ① 操作・署名→ Keystone 管理 API ↓③ ロール ( 35357/TCP ) ↑② 操作・署名署名( Signature ):ユーザ名・操作日時を含む Nova 等HTTP リクエストボディを ←④ 操作結果ユーザのシークレットキーで Amazon EC2 互換 API計算したハッシュ値 ( 8773/TCP )
  14. 14. Curl での例①:ユーザ認証$ curl -d {"auth": {"tenantName": "tenant1”, 実際には1行で記述 "passwordCredentials": {"username": "joe", "password": "shhh"}}} -H "Content-type: application/json" http://localhost:5000/v2.0/tokens Keystone の認証 API{"access": { 実行結果を  "token": {"expires": "2012-10-26T22:27:40Z", "id": "2cd10cc33d034a50b30f9867241c93cc", 見やすく加工 "tenant": ... },  "serviceCatalog": [ {"nova": { "endpoints": [    {"adminURL": "http://10.0.2.15:8774/v2.0",    "region":   "RegionOne", "id": “....”,     "internalURL": "http://10.0.2.15:8774/v2.0",     "publicURL": "http://10.0.2.15:8774/v2.0"}], "name": "nova", "type": "compute”, ...},
  15. 15. Curl での例②:サービス操作$ curl -v -H "X-Auth-Token:2cd10cc33d034a50b30f9867241c93cc"   http://10.0.2.15:8774/v2.0/images{"images": [ Nova の OpenStack Compute API {"id": 3, "links": [  {"href": "http://10.0.2.15:8774/v2.0/images/3", "rel": "self"},  {"href": "http://10.0.2.15:8774/images/3", "rel": "bookmark"}],   "name": "ubuntu-11.04-server"}, {"id": 2, "links": [  {"href": "http://10.0.2.15:8774/v2.0/images/2", "rel": "self"},  {"href": "http://10.0.2.15:8774/images/2", "rel": "bookmark"}],   "name": "ubuntu-11.04-initrd"}, {"id": 1, "links": [  {"href": "http://10.0.2.15:8774/v2.0/images/1", "rel": "self"},  {"href": "http://10.0.2.15:8774/images/1", "rel": "bookmark"}],   "name": "ubuntu-11.04-kernel"}]}
  16. 16. OpenStack クライアントライブラリ
  17. 17. クライアントライブラリ登場以前各コンポーネントのソースコード中にクライアントアクセス用のソースコード( client.py 等)があり、これを他のコンポーネントが利用していた● Nova 用のサーバに Keystone や Glance の ソースコードを全てインストール(無駄が多い)● 他コンポーネント用サーバも同様 コンポーネント毎の軽量ライブラリが必要
  18. 18. OpenStack クライアントライブラリOpenStack の複雑なユーザ認証と、各種 OpenStack API 固有の利用可能な操作をPython で簡単に扱う為のライブラリ群● ネーミングルール python-< コンポーネント名 >client● それぞれ API 操作用の CLI を含む – python-novaclient には nova コマンドが付属している。 他のライブラリも同様 – Glance だけ Glance 本体のソースコードに 古い glance コマンドが残っている ※廃止予定
  19. 19. 各ライブラリ名とバージョン Folsom 時のコンポーネント クライアントライブラリ名 バージョン Nova python-novaclient 2.9.0 Swift python-swiftclient 1.2.0 Glance python-glanceclient 0.5.1Keystone python-keystoneclient 0.1.3Quantum python-quantumclient 2.1 Cinder python-cinderclient 1.0.0 ※OpenStack ライブラリのバージョン番号のポリシーがコロコロ変わるので、   git のタグには essex-1 や 2012.1 等が存在する
  20. 20. 使用例 (python-novaclient)# python-novaclient をインポートfrom novaclient.v1_1 import client# 操作用インスタンスを作成# ※USER, PASS, TENANT, AUTH_URL は文字列変数nt = client.Client(USER, PASS, TENANT, AUTH_URL, service_type="compute")# サーバの一覧nt.servers.list()# サーバの作成# ※NAME, IMAGE, FLAVOR, KEYNAME は文字列変数nt.servers.create(NAME, IMAGE, FLAVOR, keyname=KEYNAME)
  21. 21. 参考情報● OpenStack API Quick Start http://docs.openstack.org/api/quick-start/content/● Programming OpenStack Compute API with Shell and Python http://docs.openstack.org/api/openstack-compute/   programmer/content/● API Specifications http://docs.openstack.org/api/api-specs.html● API Complete Reference http://api.openstack.org/
  22. 22. Q&A
  23. 23. お疲れ様でした!

×