Your SlideShare is downloading. ×
OpenStack API
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

OpenStack API

4,549
views

Published on

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

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

Published in: Education

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,549
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
116
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. OpenStack API 吉山あきら akirayoshiyama@gmail.com
  • 2. 目次● OpenStack 各コンポーネントの API● OpenStack API● OpenStack クライアントライブラリ
  • 3. OpenStack 各コンポーネントの API
  • 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. 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. その他のコンポーネントの 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. OpenStack API
  • 8. OpenStack API 登場以前Nova は当初 Amazon EC2 互換 API のみ● 標準 CLI は Eualyptus 用の Euca2ools独自の機能拡張をする際、 EC2 互換 API では…● クライアントツールを改造/独自開発する必要がある● 結果的に API の互換性が低下するOpenStack プロジェクトで自由に拡張可能な RESTful API を開発する事にした
  • 9. OpenStack API● Rackspace のクラウドサービス API を参考 ● 比較的素直な RESTful API リソースの create/read/update/delete が基本● ユーザ認証とサービス操作で別の URL を使用 ● ユーザ認証… Keystone サービス API の URL ● サービス操作… Keystone から返されたエンドポイント URL
  • 10. OpenStack API のユーザ認証 サービス API ( 5000/TCP ) ① ユーザ名、 パスワード→ Keystone ←② エンドポイント、 トークン Nova 等
  • 11. OpenStack API のサービス操作 ③ トークン、操作→ Keystone 管理 API ↓⑤ ロール ( 35357/TCP ) ④ トークン↑ Nova 等 ←⑥ 操作結果 OpenStack Compute API ( 8774/TCP )
  • 12. エンドポイントとトークンエンドポイント 各種 OpenStack API の URL (全コンポーネントの URL が一度に提供される)トークン 各種 OpenStack API のユーザ認証で ユーザ名・パスワードの代わりに使用する文字列 – 有効期限がある – HTTP のセッションクッキーと同様
  • 13. 参考: Amazon EC2 互換 API ① 操作・署名→ Keystone 管理 API ↓③ ロール ( 35357/TCP ) ↑② 操作・署名署名( Signature ):ユーザ名・操作日時を含む Nova 等HTTP リクエストボディを ←④ 操作結果ユーザのシークレットキーで Amazon EC2 互換 API計算したハッシュ値 ( 8773/TCP )
  • 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. 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. OpenStack クライアントライブラリ
  • 17. クライアントライブラリ登場以前各コンポーネントのソースコード中にクライアントアクセス用のソースコード( client.py 等)があり、これを他のコンポーネントが利用していた● Nova 用のサーバに Keystone や Glance の ソースコードを全てインストール(無駄が多い)● 他コンポーネント用サーバも同様 コンポーネント毎の軽量ライブラリが必要
  • 18. OpenStack クライアントライブラリOpenStack の複雑なユーザ認証と、各種 OpenStack API 固有の利用可能な操作をPython で簡単に扱う為のライブラリ群● ネーミングルール python-< コンポーネント名 >client● それぞれ API 操作用の CLI を含む – python-novaclient には nova コマンドが付属している。 他のライブラリも同様 – Glance だけ Glance 本体のソースコードに 古い glance コマンドが残っている ※廃止予定
  • 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. 使用例 (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. 参考情報● 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. Q&A
  • 23. お疲れ様でした!

×