SlideShare a Scribd company logo
OpenStack API
       吉山あきら
 akirayoshiyama@gmail.com
目次
●   OpenStack 各コンポーネントの API
●   OpenStack API
●   OpenStack クライアントライブラリ
OpenStack 各コンポーネントの API
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
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
その他のコンポーネントの API
Glance
●   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 と同一
OpenStack API
OpenStack API 登場以前
Nova は当初 Amazon EC2 互換 API のみ
●   標準 CLI は Eualyptus 用の Euca2ools
独自の機能拡張をする際、 EC2 互換 API では…
●   クライアントツールを改造/独自開発する必要がある
●   結果的に API の互換性が低下する



OpenStack プロジェクトで自由に拡張可能な
    RESTful API を開発する事にした
OpenStack API
●   Rackspace のクラウドサービス API を参考
    ●   比較的素直な RESTful API
          リソースの create/read/update/delete が基本
●   ユーザ認証とサービス操作で別の URL を使用
    ●   ユーザ認証… Keystone サービス API の URL
    ●   サービス操作… Keystone から返されたエンドポイント URL
OpenStack API のユーザ認証
                   サービス API
                   ( 5000/TCP )
  ① ユーザ名、
  パスワード→                    Keystone
            ←② エンドポイント、
                トークン




                             Nova 等
OpenStack API のサービス操作


   ③ トークン、操作→             Keystone
                   管理 API
                                ↓⑤ ロール
                ( 35357/TCP )


                   ④ トークン↑

                           Nova 等
            ←⑥ 操作結果
                  OpenStack Compute API
                  ( 8774/TCP )
エンドポイントとトークン
エンドポイント
 各種 OpenStack API の URL
 (全コンポーネントの URL が一度に提供される)
トークン
 各種 OpenStack API のユーザ認証で
 ユーザ名・パスワードの代わりに使用する文字列
 –   有効期限がある
 –   HTTP のセッションクッキーと同様
参考: Amazon EC2 互換 API


         ① 操作・署名→                 Keystone
                           管理 API
                                        ↓③ ロール
                        ( 35357/TCP )


                         ↑② 操作・署名
署名( Signature ):
ユーザ名・操作日時を含む
                                   Nova 等
HTTP リクエストボディを
                    ←④ 操作結果
ユーザのシークレットキーで             Amazon EC2 互換 API
計算したハッシュ値                 ( 8773/TCP )
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”,
    ...},
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"}]}
OpenStack クライアントライブラリ
クライアントライブラリ登場以前
各コンポーネントのソースコード中にクライアント
アクセス用のソースコード( client.py 等)があり、
これを他のコンポーネントが利用していた
●   Nova 用のサーバに Keystone や Glance の
    ソースコードを全てインストール(無駄が多い)
●   他コンポーネント用サーバも同様



    コンポーネント毎の軽量ライブラリが必要
OpenStack クライアントライブラリ
OpenStack の複雑なユーザ認証と、
各種 OpenStack API 固有の利用可能な操作を
Python で簡単に扱う為のライブラリ群
●   ネーミングルール
        python-< コンポーネント名 >client
●   それぞれ API 操作用の CLI を含む
    –   python-novaclient には nova コマンドが付属している。
        他のライブラリも同様
    –   Glance だけ Glance 本体のソースコードに
        古い glance コマンドが残っている ※廃止予定
各ライブラリ名とバージョン
                                    Folsom 時の
コンポーネント     クライアントライブラリ名
                                     バージョン
  Nova        python-novaclient         2.9.0
  Swift       python-swiftclient        1.2.0
 Glance      python-glanceclient        0.5.1
Keystone    python-keystoneclient       0.1.3
Quantum     python-quantumclient         2.1
 Cinder      python-cinderclient        1.0.0
  ※OpenStack ライブラリのバージョン番号のポリシーがコロコロ変わるので、
    git のタグには essex-1 や 2012.1 等が存在する
使用例 (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)
参考情報
●   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/
Q&A
お疲れ様でした!

More Related Content

PDF
Using ngx_lua / lua-nginx-module in pixiv
PDF
Embulk 20150411
PDF
OCP Meetup Tokyo #05 ECK on OCP
PDF
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
PDF
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
PDF
Elixir Meetup #1 Loggerの構造と拡張
PPTX
ServiceStackの紹介
PDF
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
Using ngx_lua / lua-nginx-module in pixiv
Embulk 20150411
OCP Meetup Tokyo #05 ECK on OCP
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Elixir Meetup #1 Loggerの構造と拡張
ServiceStackの紹介
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...

What's hot (20)

KEY
Web Operations and Perl kansai.pm#14
PDF
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
PDF
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
PDF
第9回 OpenStack 勉強会(Glance)
PDF
Ansible 2.0を使って組む kubernetesクラスタ vol.1
PDF
Amazon ECS事始め
PDF
AWSをコードで定義する
PPTX
イベント駆動プログラミングとI/O多重化
PDF
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
PDF
10分で作る Node.js Auto Scale 環境 with CloudFormation
PDF
20140612_Docker上でCloudStackを動かしてみる!!
PDF
Spark Streaming Snippets
PDF
TerraformでECS+ECRする話
PPTX
PPTX
Let's Use OKE
PPTX
FIWAREシステム内の短期履歴の管理
PDF
10分でわかる marathon-lb
PDF
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
PPTX
Introduction to Magnum (JP)
PDF
Ansible handson
Web Operations and Perl kansai.pm#14
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
第9回 OpenStack 勉強会(Glance)
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Amazon ECS事始め
AWSをコードで定義する
イベント駆動プログラミングとI/O多重化
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
10分で作る Node.js Auto Scale 環境 with CloudFormation
20140612_Docker上でCloudStackを動かしてみる!!
Spark Streaming Snippets
TerraformでECS+ECRする話
Let's Use OKE
FIWAREシステム内の短期履歴の管理
10分でわかる marathon-lb
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
Introduction to Magnum (JP)
Ansible handson
Ad

Viewers also liked (20)

PDF
OpenStack API's and WSGI
PDF
OpenStack hyeroglyphs
PDF
OpenStack Summit in Hong Kong 参加報告
PDF
OpenStack の利用
PDF
OpenStack Study#9 JOSUG
PPTX
OpenStack開発のいろはの「い」
PDF
20130209勉強会
PDF
Tour of Scraping
PPTX
『フルスタックエンジニアを目指す』ためのOpenStack勉強術 - OpenStack最新情報セミナー 2014年2月
PDF
cinder-agent
PDF
20130319勉強会
PDF
OpenStack 最新動向 2015/2
PDF
OpenStack Summit in Atlanta 参加報告
PDF
OpenStack概要(オープンクラウド最新動向)
PDF
実践スクレイピング
PDF
OpenStack Block Storage (Cinder)
PPTX
Webクローリング&スクレイピングの最前線 公開用
PDF
OpenStackをさらに”使う”技術 概要と基礎操作
PDF
OpenStack概要
PDF
WebDB Forum 2016 gunosy
OpenStack API's and WSGI
OpenStack hyeroglyphs
OpenStack Summit in Hong Kong 参加報告
OpenStack の利用
OpenStack Study#9 JOSUG
OpenStack開発のいろはの「い」
20130209勉強会
Tour of Scraping
『フルスタックエンジニアを目指す』ためのOpenStack勉強術 - OpenStack最新情報セミナー 2014年2月
cinder-agent
20130319勉強会
OpenStack 最新動向 2015/2
OpenStack Summit in Atlanta 参加報告
OpenStack概要(オープンクラウド最新動向)
実践スクレイピング
OpenStack Block Storage (Cinder)
Webクローリング&スクレイピングの最前線 公開用
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStack概要
WebDB Forum 2016 gunosy
Ad

Similar to OpenStack API (20)

PDF
CloudStack Ecosystem Day - OpenStack/Swift
PDF
OpenStack勉強会
PDF
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
PPTX
Open stackceilometer
PDF
OpenStack Abstract @osc2012kyoto
PDF
OpenStack Updates
PDF
OSC 2011 Tokyo/Spring OpenStackプレゼン
PDF
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
PDF
Open stack overview_20130301
PDF
Whats new Apache CloudStack
PDF
OpenStack APIを使った新しいアプリケーションモデル
PDF
Open stack nova_austin報告書
PPTX
OpenStack概要 ~仮想ネットワーク~
PDF
Openstack abstract2
PDF
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
PDF
自作プライベートクラウド研究会 OpenStackアップデート
PDF
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
PDF
OSC2013 Tokyo Spring OpenStack Overview
PPTX
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
CloudStack Ecosystem Day - OpenStack/Swift
OpenStack勉強会
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Open stackceilometer
OpenStack Abstract @osc2012kyoto
OpenStack Updates
OSC 2011 Tokyo/Spring OpenStackプレゼン
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Open stack overview_20130301
Whats new Apache CloudStack
OpenStack APIを使った新しいアプリケーションモデル
Open stack nova_austin報告書
OpenStack概要 ~仮想ネットワーク~
Openstack abstract2
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
自作プライベートクラウド研究会 OpenStackアップデート
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
OSC2013 Tokyo Spring OpenStack Overview
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1

More from Akira Yoshiyama (16)

PDF
OpenStack Trainリリース (Rev.2)
PDF
OpenStack Train リリース
PDF
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
PDF
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
PDF
Nova から見る OpenStack プロジェクトの歴史 (rev.2)
PDF
コンテナ時代のOpenStack
PDF
OpenStack Rocky リリース
PDF
201709 osc josug
PDF
OpenStack Ocata リリース
PDF
201703 osc josug
PDF
Osc201703 tokyo-clonezilla-v1.2 j
PDF
OpenStack 最新動向 2016/11
PDF
OpenStack最新動向 2016/2
PDF
Openstack 2014.2 (Juno Release)
PDF
OpenStack 2014.1 (Icehouse Release)
PDF
OpenStack Grizzly Release
OpenStack Trainリリース (Rev.2)
OpenStack Train リリース
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova から見る OpenStack プロジェクトの歴史 (rev.2)
コンテナ時代のOpenStack
OpenStack Rocky リリース
201709 osc josug
OpenStack Ocata リリース
201703 osc josug
Osc201703 tokyo-clonezilla-v1.2 j
OpenStack 最新動向 2016/11
OpenStack最新動向 2016/2
Openstack 2014.2 (Juno Release)
OpenStack 2014.1 (Icehouse Release)
OpenStack Grizzly Release

OpenStack API

  • 1. OpenStack API 吉山あきら akirayoshiyama@gmail.com
  • 2. 目次 ● OpenStack 各コンポーネントの API ● OpenStack API ● OpenStack クライアントライブラリ
  • 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. その他のコンポーネントの API Glance ● 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 と同一
  • 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"}]}
  • 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.1 Keystone python-keystoneclient 0.1.3 Quantum 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