SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
VYATTA REST-API
Software-Based Networking and Security from Vyatta
1© 2012 Brocade Communications Systems, Inc. CONFIDENTIAL—For Internal Use Only© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
話者紹介
• 菊池 之裕(きくち ゆきひろ)
• Twitter @yukihirokikuchi
• ISPにてルータ開発の後、IXにて監視アプリ開発、運用、その他一般
(NetNewsとかDNSとか)
• 2010/04より現職
• プリセールスSE兼OpenFlow,OpenStack,仮想化系一般担当
• Vyatta買収後にVyatta Users Group運営委員に
• ユーザとしての立場でのVyattaサポーター
• いまさっき VyOS Users GroupにSubscribeしました。
© 2013 Brocade Communications Systems, Inc. 2
Agenda
• なぜAPIが必要なのか
• RESTful/REST-APIとは?
• REST-APIのユースケース
• VyattaでのREST-API
• デモ
• まとめ
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 3
なぜAPIが必要なのか
4© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
なぜAPIが必要なのか?
• 自動化
• 省力化
• 外部からのコントロール
• CLIでダメですか?/GUIでも自動化できますけど?
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 5
Cloudで自動化できました
• ではネットワーク設定に関しては?
• 動的にサブネットを追加するケース
• Routing設定が必要
• 使用するDCを増設するケース
• VPN設定が必要
• その他
• VMライフサイクル管理だけ自動化できても…
• Network configurationを自動化できる仕組みが必要
VMライフサイクル管理に関しては万全
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 6
CLIを模倣するツール
#!/usr/bin/expect
set host www.yahoo.co.jp
set path "/stocks/detail/?code=998407.O"
spawn telnet $host 80
expect “Escape“ #例えば、ここで”escape”と返されると、アドリブが効かず、刺さる
send "GET $path HTTP/1.1¥rHost: $host¥rConnection: close¥r¥r"
expect eof
その名の通りexpectする。Expectしたものが来ないと、Timeoutを待つ
Expectした応答が1字違っても期待通り動作しない
例:expect
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 7
APIはCLIとはどう違う?
要は人間相手か機械相手か
Web/CLIは人間相手/これらは機械相手には設計されていない
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 8
人間の動作 機械の動作
あいまいさ 許容する 許容しない
画面の見栄え 重要 不要
データ配置の柔軟性 高い 極めて低い
エラー処理の柔軟性 極めて高い 低い
レイアウトの変更 問題なし 致命的
読めますよね?
機械が苦手とする例
CLI/Webは人間相手なので、そのままでは自動化しづらい
APIは機械相手-最初から自動化を意識している
感動的なexcel方眼紙
http://oku.edu.mie-u.ac.jp/~okumura/SSS2013.pdf
構造化されたtext
• Json
• JavaScript Object Notation
• RESTで標準的に使用される
• JavaScriptとあるが、言語に依存しない
• XML
• eXtemted Markup Langange
• SOAP/NetConfで標準的に使用される
• 言語依存なし
Structured text
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 9
エラー処理
• オペレーションは複数のコマンドを含む
• 都度、実行の成否を確認する必要がある
• 単独では用をなさない
• トランザクション実行
• 全部実行するか、まったく実行しないか
• 中途半端な設定投入は回避すべき
その重要性
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 10
CLIを模倣する手法の問題点
• CLIの返答はコマンドごとに違う
• Configモードへ移行する場合(応答:”[edit]”がエラーなし)
• 正常応答
• [edit]
• Discardコマンド(応答:最終行”[edit]”がエラーなし(という担保はな
い))
• 正常応答(その1)
• Changes have been discarded
• [edit]
• 正常応答(その2)
• No changes have been discarded
• [edit]
エラーなしのサインは統一されていない
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 11
CLIを模倣する手法の問題点(Contd.)
• エラーの例
• Configモードへ移行する場合
• エラーパターン(その1)
• vyatta@vyatta:~$ configuree
• Invalid command: [configuree]
• vyatta@vyatta:~$
• エラーパターン(その2)
• vyatta@vyatta:~$ con
• Ambiguous command: [con]
• Possible completions:
• configure Enter configure mode
• connect Establish a connection
エラーメッセージも千差万別
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 12
もちろん、こんなミス(スペルミス)
はscriptでは起きようがない。
ただし、CLI syntaxの変更は予告なく
行われている。
今日動くscriptが次のpatchで正常に動作
する保証はない。
人間ならエラーメッセージに応じて
対処可能なのだが。
APIを使用する場合
• RESTの場合
• HTTPスタータスコードを確認
• 200/201が成功/400だとエラー
• (メッセージがあれば)JSONで記載されている
• JSONは容易にparseできる(たいていのプログラム言語はライブラリが準備されている)
• SOAP over HTTPの場合
• HTTPステータスコードを確認
• 200/400などを確認
• 併せてSOAPエンベロープを確認
• エラーメッセージはSOAP(XML)をparseして確認する(たいていのプログラム言語はライブ
ラリが準備されている)
エラー処理は明確に定義されている
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 13
APIを使用する場合
• NetConf over httpの場合
• HTTPステータスコードを確認
• 200/400などを確認
• 併せてXML/YANGを確認
• エラーメッセージはXMLをparseして確認する(たいていのプログラム言語はライブラリが準
備されている)
エラー処理は明確に定義されている
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 14
APIの約束
• 下位互換性を基本的に担保
• 仕様は変更されうるが、影響を最小限に抑える形で変更される
• ライブラリ側で吸収できるような変更のみ
• エラーコードの変更は行われない
• ステータスコードを基準にしてエラー処理が可能
• メッセージは変更されうるが、これが変更されてもAPI経由の動作は影響を受けない
• Versioning
• Versionを明記することで下位互換性を保持
下位互換性
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 15
RESTful/REST-APIとは?
16© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
RESTfulとは?
• では、RESTとは?
(WikiPediaより抜粋)
• Representational State Transfer(REST) は、ウェブのような分散ハイパーメ
ディアシステムのためのソフトウェアアーキテクチャのスタイルのひとつ
である。この語は2000年に、HTTPプロトコル規格の主要著者の一人であ
るen:Roy Fieldingが、ウェブについて書いた博士論文で初めて現れ、ネッ
トワーキングコミュニティの中ですぐに広く使われることになった。
RESTは、初めはアーキテクチャの原則と制約の集まり(後述)を指していた
が、次第に、XMLやHTTPを使った簡易なウェブベースのインターフェイス
のうち、WebサービスのSOAPプロトコルのような MEP(Message
Exchange Pattern; SOAPノード相互のメッセージ交換のパターンを確立する
ための雛型)ベースの特別な抽象化をしないもののことを、大まかに意味
する用語として使われるようになった。
REST原則に従うシステム(WikiPediaより)
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 17
RESTとは(Contd.)
• 広義にはHTTP-GETで状態を確認できるWebサービス
• 種々のオペレーションを数種類のHTTPのメソッドにマッピング
• GET/POST/PUT/DELETE
• ステートレス
• 既存httpインフラとの親和性
• それぞれのオペレーションは一意なURIでマッピングされる
• URIにターゲットが含まれる
• POST rest/conf/67FA7AB2053C1FF2/show/interfaces/ethernet/eth0
• 容易な類推
極論覚悟でまとめると…
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 18
SOAP/Netconfとはどう違う?
• SOAP/Netconfはメッセージ転送プロトコルに依存しない
• http(s)/ssh,etc(機器の実装に依存)
• エラー確認はSOAP/YANGをフォーマットを解釈する必要あり
• 下位メッセージ転送レイヤでのエラーコードだけではエラーの確認はできない
• RESTはhttpに依存
• http(s)を利用
• httpステータスコード(400/200/etc.)で実行の可否を判別可能
• Error stringはHTTPbody(json)で提供
RESTのプロトコル構造
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 19
HTTP
REST(json)
HTTP ssh Etc.
SOAP Envelope
ssh Etc.
YANG
REST SOAP NetConf
HTTP
RESTfulとは(Contd.)
• curl/wgetのようなCLI-webブラウザで操作可能なAPI
• もちろんwebブラウザのプラグインでも操作可能
• Ex.)Firefox-requester/poster,etc.
• 容易な開発/デバッグそして理解
• 学習コストの低さ
• 各種ツールを利用可能
• ブラウザベース/各種言語のライブラリ
• エラーハンドリングの容易さ(HTTPステータスコードで判別して例外処理)
• HTTPとの親和性
• Proxy/firewallなどへの追加設定は不要
さらに突き詰めれば
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 20
VyattaでのAPI実装
21© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
Vyatta OS Architecture
Linux Kernel with Multi-Platform Virtualization Drivers
Routing Firewall NAT VPN QoS IPv6
Vyatta Data Model
CLI API GUI
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 22
Vyatta OS Architecture
Linux Kernel with Multi-Platform Virtualization Drivers
Routing Firewall NAT VPN QoS IPv6
Vyatta Data Model
CLI API GUI
ココ!
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 23
RESTFul-APIのユースケース
• アクション
• 仮想マシン群を新規の別サブネットに配備して、routerで接続する
(仮想マシンのサブネットは動的に決まるため、routerのconfigも追従する必
要がある)
• その手順(例):
• Vattaの立ち上げ(ここまではHyperVisorの役割)
• VyattaのMgmt InterfaceにはIPが前もってアサインされている
• ここからRESTFulの出番
• Vyattaにconfigを投入する(IP Interfaceの作成、routingの設定など)
• 必要に応じてconfigを更新してsaveする
オーケストレーションレイヤとの連動(その1)
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 24
VyattaでのREST-API
• POST /rest/conf
• (ここでconf-id取得)
• 同等なCLI:$configure
• PUT /rest/conf/<conf-id>/set/<path>
• 同等なCLI:#set …
• POST /rest/conf/<conf-id>/<cmd>
• 同等なCLI:#commit,save,etc
• GET /rest/conf/<conf-id>/<path>
• 同等なCLI:#show
その流れ(configモード)
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 26
VyattaでのREST-API
• GET /rest/conf
• 同等なCLI:N/A
• (現在走っているセッションを確認)
• DELETE /rest/conf/<conf-id>
• 同等なCLI:exit
その流れ(configモード):Contd.
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 27
デモ
28© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
クラウド環境でのデモ
• さくらのクラウド ⇔ Cloud(n) 間でVPN構築
• RESTでやってみます。
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 29
ネットワーク環境
• REST
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 30
10.1.0.1/24
OpenVPN
RESTで設定、クラウド間VPNを構築
10.0.0.1/24
10.0.0.100/24
153.149.38.46
実際のオペレーション
• Configモードへの移行
$ curl -k -s -i -u vyatta:vyatta -H "content-length:0" -H "Accept: application/json" -X
POST http://192.168.1.202/rest/conf
HTTP/1.1 201 Created
Content-Type: application/json
Location: rest/conf/45F76296CD266AFE <=これが<conf-id>
…後略
Curlの例
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 31
まず、conf-idを取得します。
以後、これを通してコンフィグレーションを行います
まとめ
32© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
まとめ
• REST-APIはユーザフレンドリ
• テスト/開発/デバッグ/デプロイが容易
• 外部から機器をコントロールするための標準手法
• 各言語のライブラリを使用可能(Python,Ruby,Perl,….)
• 他システムとの統合(OpenStack,CloudStack,etc..)
• 自製ツールへの組み込み
• 自動化による工数削減
• 統一されたエラーハンドリングによる開発効率の向上
• DevOps / Immutable Computing が可能に
REST-API
© 2014 Brocade Communications Systems, Inc. Company Proprietary Information 33
THANK YOU
34© 2014 Brocade Communications Systems, Inc. Company Proprietary Information

Contenu connexe

Tendances

API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXnpsg
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automationHiromi Tsukamoto
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態npsg
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCItetsusat
 
OCP, Kubernetes ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)
OCP, Kubernetes  ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)OCP, Kubernetes  ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)
OCP, Kubernetes ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)VirtualTech Japan Inc.
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOFVirtualTech Japan Inc.
 
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)VirtualTech Japan Inc.
 
Service Chaining Current and Future
Service Chaining Current and FutureService Chaining Current and Future
Service Chaining Current and FutureKentaro Ebisawa
 
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入Juniper Networks (日本)
 
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月VirtualTech Japan Inc.
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門Dell TechCenter Japan
 
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexCisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexTakao Setaka
 
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
160719 we love-sd-wan(juniper)_0.2
160719 we love-sd-wan(juniper)_0.2160719 we love-sd-wan(juniper)_0.2
160719 we love-sd-wan(juniper)_0.2Hiromi Tsukamoto
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 

Tendances (20)

API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMX
 
IOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデートIOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデート
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
 
OCP, Kubernetes ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)
OCP, Kubernetes  ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)OCP, Kubernetes  ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)
OCP, Kubernetes ハイパースケールアーキテクチャ 導入の道のり - OpenStack最新情報セミナー(2016年7月)
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
 
Service Chaining Current and Future
Service Chaining Current and FutureService Chaining Current and Future
Service Chaining Current and Future
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
 
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門
 
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexCisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
 
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
 
EVPN for Cloud Builders
EVPN for Cloud BuildersEVPN for Cloud Builders
EVPN for Cloud Builders
 
160719 we love-sd-wan(juniper)_0.2
160719 we love-sd-wan(juniper)_0.2160719 we love-sd-wan(juniper)_0.2
160719 we love-sd-wan(juniper)_0.2
 
Open contrailday 20150926
Open contrailday 20150926Open contrailday 20150926
Open contrailday 20150926
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
 

Similaire à 20140404 vyatta users Group / REST API解説

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkinsKohsuke Kawaguchi
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用Abe Junichiro
 
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介Yukihiro Kikuchi
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade
 
About SoftLayer at OSC Tokyo Spring
About SoftLayer at OSC Tokyo SpringAbout SoftLayer at OSC Tokyo Spring
About SoftLayer at OSC Tokyo SpringKimihiko Kitase
 
20140927 azure pack_slideshare
20140927 azure pack_slideshare20140927 azure pack_slideshare
20140927 azure pack_slideshareOsamu Takazoe
 
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要Shohei Yoshimoto
 
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper Networks (日本)
 
ニフティクラウド C4 sa ご紹介資料ver.1.2
ニフティクラウド C4 sa ご紹介資料ver.1.2ニフティクラウド C4 sa ご紹介資料ver.1.2
ニフティクラウド C4 sa ご紹介資料ver.1.2Satoshi Ueno
 
CONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 NetworkCONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 NetworkYuya Takahashi
 
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~ リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~ Brocade
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppugMiya Kohno
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Godai Nakamura
 
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルールBrocade
 
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒント
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒントOpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒント
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒントBrocade
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...Naoto Gohko
 

Similaire à 20140404 vyatta users Group / REST API解説 (20)

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
 
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
Okinawa Open Days 2013 SDN Japan前夜祭 BoF Vyattaご紹介
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-
 
150212 summit発表用資料 公開用
150212 summit発表用資料 公開用150212 summit発表用資料 公開用
150212 summit発表用資料 公開用
 
About SoftLayer at OSC Tokyo Spring
About SoftLayer at OSC Tokyo SpringAbout SoftLayer at OSC Tokyo Spring
About SoftLayer at OSC Tokyo Spring
 
20140927 azure pack_slideshare
20140927 azure pack_slideshare20140927 azure pack_slideshare
20140927 azure pack_slideshare
 
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要
Big Cloud Fabric製品紹介とOpenStack Neutron Plugin 実装概要
 
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
 
ニフティクラウド C4 sa ご紹介資料ver.1.2
ニフティクラウド C4 sa ご紹介資料ver.1.2ニフティクラウド C4 sa ご紹介資料ver.1.2
ニフティクラウド C4 sa ご紹介資料ver.1.2
 
CONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 NetworkCONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 Network
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~ リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
リスク知らずのプライベート・クラウド移行術 ~『攻める情シス』のための現実解とSDxへの進化~
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppug
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
「小さくはじめる→成功する→全体最適へ→成功する」が黄金ルール
 
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒント
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒントOpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒント
OpenStackやりたい人、必見!ネットワークから見たOpenStack導入のヒント
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
 

Plus de Yukihiro Kikuchi

SD-WANって何だろう。使い方を知ってみよう(AWS分)
SD-WANって何だろう。使い方を知ってみよう(AWS分)SD-WANって何だろう。使い方を知ってみよう(AWS分)
SD-WANって何だろう。使い方を知ってみよう(AWS分)Yukihiro Kikuchi
 
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)Yukihiro Kikuchi
 
Ihanet meeting12 Vyatta/VyOSのお話
Ihanet meeting12 Vyatta/VyOSのお話Ihanet meeting12 Vyatta/VyOSのお話
Ihanet meeting12 Vyatta/VyOSのお話Yukihiro Kikuchi
 
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアル
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアルVyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアル
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアルYukihiro Kikuchi
 
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLI
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLIVyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLI
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLIYukihiro Kikuchi
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29Yukihiro Kikuchi
 
となりの手順書をみてみたい勉強会 資料
となりの手順書をみてみたい勉強会 資料となりの手順書をみてみたい勉強会 資料
となりの手順書をみてみたい勉強会 資料Yukihiro Kikuchi
 

Plus de Yukihiro Kikuchi (8)

Janog43 cloud-bof
Janog43 cloud-bofJanog43 cloud-bof
Janog43 cloud-bof
 
SD-WANって何だろう。使い方を知ってみよう(AWS分)
SD-WANって何だろう。使い方を知ってみよう(AWS分)SD-WANって何だろう。使い方を知ってみよう(AWS分)
SD-WANって何だろう。使い方を知ってみよう(AWS分)
 
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)
AWSの最新ネットワーク機能(2019/09/17 NW-JAWS)
 
Ihanet meeting12 Vyatta/VyOSのお話
Ihanet meeting12 Vyatta/VyOSのお話Ihanet meeting12 Vyatta/VyOSのお話
Ihanet meeting12 Vyatta/VyOSのお話
 
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアル
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアルVyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアル
Vyatta users meeting 2013 Autumn Brocade Vyatta vRouter チュートリアル
 
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLI
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLIVyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLI
Vyatta users meeting 2013 Autumn 先端ネットワーク技術パネル GUI->CLI
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
 
となりの手順書をみてみたい勉強会 資料
となりの手順書をみてみたい勉強会 資料となりの手順書をみてみたい勉強会 資料
となりの手順書をみてみたい勉強会 資料
 

20140404 vyatta users Group / REST API解説

  • 1. VYATTA REST-API Software-Based Networking and Security from Vyatta 1© 2012 Brocade Communications Systems, Inc. CONFIDENTIAL—For Internal Use Only© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 2. 話者紹介 • 菊池 之裕(きくち ゆきひろ) • Twitter @yukihirokikuchi • ISPにてルータ開発の後、IXにて監視アプリ開発、運用、その他一般 (NetNewsとかDNSとか) • 2010/04より現職 • プリセールスSE兼OpenFlow,OpenStack,仮想化系一般担当 • Vyatta買収後にVyatta Users Group運営委員に • ユーザとしての立場でのVyattaサポーター • いまさっき VyOS Users GroupにSubscribeしました。 © 2013 Brocade Communications Systems, Inc. 2
  • 3. Agenda • なぜAPIが必要なのか • RESTful/REST-APIとは? • REST-APIのユースケース • VyattaでのREST-API • デモ • まとめ © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 3
  • 4. なぜAPIが必要なのか 4© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 5. なぜAPIが必要なのか? • 自動化 • 省力化 • 外部からのコントロール • CLIでダメですか?/GUIでも自動化できますけど? © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 5
  • 6. Cloudで自動化できました • ではネットワーク設定に関しては? • 動的にサブネットを追加するケース • Routing設定が必要 • 使用するDCを増設するケース • VPN設定が必要 • その他 • VMライフサイクル管理だけ自動化できても… • Network configurationを自動化できる仕組みが必要 VMライフサイクル管理に関しては万全 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 6
  • 7. CLIを模倣するツール #!/usr/bin/expect set host www.yahoo.co.jp set path "/stocks/detail/?code=998407.O" spawn telnet $host 80 expect “Escape“ #例えば、ここで”escape”と返されると、アドリブが効かず、刺さる send "GET $path HTTP/1.1¥rHost: $host¥rConnection: close¥r¥r" expect eof その名の通りexpectする。Expectしたものが来ないと、Timeoutを待つ Expectした応答が1字違っても期待通り動作しない 例:expect © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 7
  • 8. APIはCLIとはどう違う? 要は人間相手か機械相手か Web/CLIは人間相手/これらは機械相手には設計されていない © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 8 人間の動作 機械の動作 あいまいさ 許容する 許容しない 画面の見栄え 重要 不要 データ配置の柔軟性 高い 極めて低い エラー処理の柔軟性 極めて高い 低い レイアウトの変更 問題なし 致命的 読めますよね? 機械が苦手とする例 CLI/Webは人間相手なので、そのままでは自動化しづらい APIは機械相手-最初から自動化を意識している 感動的なexcel方眼紙 http://oku.edu.mie-u.ac.jp/~okumura/SSS2013.pdf
  • 9. 構造化されたtext • Json • JavaScript Object Notation • RESTで標準的に使用される • JavaScriptとあるが、言語に依存しない • XML • eXtemted Markup Langange • SOAP/NetConfで標準的に使用される • 言語依存なし Structured text © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 9
  • 10. エラー処理 • オペレーションは複数のコマンドを含む • 都度、実行の成否を確認する必要がある • 単独では用をなさない • トランザクション実行 • 全部実行するか、まったく実行しないか • 中途半端な設定投入は回避すべき その重要性 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 10
  • 11. CLIを模倣する手法の問題点 • CLIの返答はコマンドごとに違う • Configモードへ移行する場合(応答:”[edit]”がエラーなし) • 正常応答 • [edit] • Discardコマンド(応答:最終行”[edit]”がエラーなし(という担保はな い)) • 正常応答(その1) • Changes have been discarded • [edit] • 正常応答(その2) • No changes have been discarded • [edit] エラーなしのサインは統一されていない © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 11
  • 12. CLIを模倣する手法の問題点(Contd.) • エラーの例 • Configモードへ移行する場合 • エラーパターン(その1) • vyatta@vyatta:~$ configuree • Invalid command: [configuree] • vyatta@vyatta:~$ • エラーパターン(その2) • vyatta@vyatta:~$ con • Ambiguous command: [con] • Possible completions: • configure Enter configure mode • connect Establish a connection エラーメッセージも千差万別 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 12 もちろん、こんなミス(スペルミス) はscriptでは起きようがない。 ただし、CLI syntaxの変更は予告なく 行われている。 今日動くscriptが次のpatchで正常に動作 する保証はない。 人間ならエラーメッセージに応じて 対処可能なのだが。
  • 13. APIを使用する場合 • RESTの場合 • HTTPスタータスコードを確認 • 200/201が成功/400だとエラー • (メッセージがあれば)JSONで記載されている • JSONは容易にparseできる(たいていのプログラム言語はライブラリが準備されている) • SOAP over HTTPの場合 • HTTPステータスコードを確認 • 200/400などを確認 • 併せてSOAPエンベロープを確認 • エラーメッセージはSOAP(XML)をparseして確認する(たいていのプログラム言語はライブ ラリが準備されている) エラー処理は明確に定義されている © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 13
  • 14. APIを使用する場合 • NetConf over httpの場合 • HTTPステータスコードを確認 • 200/400などを確認 • 併せてXML/YANGを確認 • エラーメッセージはXMLをparseして確認する(たいていのプログラム言語はライブラリが準 備されている) エラー処理は明確に定義されている © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 14
  • 15. APIの約束 • 下位互換性を基本的に担保 • 仕様は変更されうるが、影響を最小限に抑える形で変更される • ライブラリ側で吸収できるような変更のみ • エラーコードの変更は行われない • ステータスコードを基準にしてエラー処理が可能 • メッセージは変更されうるが、これが変更されてもAPI経由の動作は影響を受けない • Versioning • Versionを明記することで下位互換性を保持 下位互換性 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 15
  • 16. RESTful/REST-APIとは? 16© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 17. RESTfulとは? • では、RESTとは? (WikiPediaより抜粋) • Representational State Transfer(REST) は、ウェブのような分散ハイパーメ ディアシステムのためのソフトウェアアーキテクチャのスタイルのひとつ である。この語は2000年に、HTTPプロトコル規格の主要著者の一人であ るen:Roy Fieldingが、ウェブについて書いた博士論文で初めて現れ、ネッ トワーキングコミュニティの中ですぐに広く使われることになった。 RESTは、初めはアーキテクチャの原則と制約の集まり(後述)を指していた が、次第に、XMLやHTTPを使った簡易なウェブベースのインターフェイス のうち、WebサービスのSOAPプロトコルのような MEP(Message Exchange Pattern; SOAPノード相互のメッセージ交換のパターンを確立する ための雛型)ベースの特別な抽象化をしないもののことを、大まかに意味 する用語として使われるようになった。 REST原則に従うシステム(WikiPediaより) © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 17
  • 18. RESTとは(Contd.) • 広義にはHTTP-GETで状態を確認できるWebサービス • 種々のオペレーションを数種類のHTTPのメソッドにマッピング • GET/POST/PUT/DELETE • ステートレス • 既存httpインフラとの親和性 • それぞれのオペレーションは一意なURIでマッピングされる • URIにターゲットが含まれる • POST rest/conf/67FA7AB2053C1FF2/show/interfaces/ethernet/eth0 • 容易な類推 極論覚悟でまとめると… © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 18
  • 19. SOAP/Netconfとはどう違う? • SOAP/Netconfはメッセージ転送プロトコルに依存しない • http(s)/ssh,etc(機器の実装に依存) • エラー確認はSOAP/YANGをフォーマットを解釈する必要あり • 下位メッセージ転送レイヤでのエラーコードだけではエラーの確認はできない • RESTはhttpに依存 • http(s)を利用 • httpステータスコード(400/200/etc.)で実行の可否を判別可能 • Error stringはHTTPbody(json)で提供 RESTのプロトコル構造 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 19 HTTP REST(json) HTTP ssh Etc. SOAP Envelope ssh Etc. YANG REST SOAP NetConf HTTP
  • 20. RESTfulとは(Contd.) • curl/wgetのようなCLI-webブラウザで操作可能なAPI • もちろんwebブラウザのプラグインでも操作可能 • Ex.)Firefox-requester/poster,etc. • 容易な開発/デバッグそして理解 • 学習コストの低さ • 各種ツールを利用可能 • ブラウザベース/各種言語のライブラリ • エラーハンドリングの容易さ(HTTPステータスコードで判別して例外処理) • HTTPとの親和性 • Proxy/firewallなどへの追加設定は不要 さらに突き詰めれば © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 20
  • 21. VyattaでのAPI実装 21© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 22. Vyatta OS Architecture Linux Kernel with Multi-Platform Virtualization Drivers Routing Firewall NAT VPN QoS IPv6 Vyatta Data Model CLI API GUI © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 22
  • 23. Vyatta OS Architecture Linux Kernel with Multi-Platform Virtualization Drivers Routing Firewall NAT VPN QoS IPv6 Vyatta Data Model CLI API GUI ココ! © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 23
  • 24. RESTFul-APIのユースケース • アクション • 仮想マシン群を新規の別サブネットに配備して、routerで接続する (仮想マシンのサブネットは動的に決まるため、routerのconfigも追従する必 要がある) • その手順(例): • Vattaの立ち上げ(ここまではHyperVisorの役割) • VyattaのMgmt InterfaceにはIPが前もってアサインされている • ここからRESTFulの出番 • Vyattaにconfigを投入する(IP Interfaceの作成、routingの設定など) • 必要に応じてconfigを更新してsaveする オーケストレーションレイヤとの連動(その1) © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 24
  • 25. VyattaでのREST-API • POST /rest/conf • (ここでconf-id取得) • 同等なCLI:$configure • PUT /rest/conf/<conf-id>/set/<path> • 同等なCLI:#set … • POST /rest/conf/<conf-id>/<cmd> • 同等なCLI:#commit,save,etc • GET /rest/conf/<conf-id>/<path> • 同等なCLI:#show その流れ(configモード) © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 26
  • 26. VyattaでのREST-API • GET /rest/conf • 同等なCLI:N/A • (現在走っているセッションを確認) • DELETE /rest/conf/<conf-id> • 同等なCLI:exit その流れ(configモード):Contd. © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 27
  • 27. デモ 28© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 28. クラウド環境でのデモ • さくらのクラウド ⇔ Cloud(n) 間でVPN構築 • RESTでやってみます。 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 29
  • 29. ネットワーク環境 • REST © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 30 10.1.0.1/24 OpenVPN RESTで設定、クラウド間VPNを構築 10.0.0.1/24 10.0.0.100/24 153.149.38.46
  • 30. 実際のオペレーション • Configモードへの移行 $ curl -k -s -i -u vyatta:vyatta -H "content-length:0" -H "Accept: application/json" -X POST http://192.168.1.202/rest/conf HTTP/1.1 201 Created Content-Type: application/json Location: rest/conf/45F76296CD266AFE <=これが<conf-id> …後略 Curlの例 © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 31 まず、conf-idを取得します。 以後、これを通してコンフィグレーションを行います
  • 31. まとめ 32© 2014 Brocade Communications Systems, Inc. Company Proprietary Information
  • 32. まとめ • REST-APIはユーザフレンドリ • テスト/開発/デバッグ/デプロイが容易 • 外部から機器をコントロールするための標準手法 • 各言語のライブラリを使用可能(Python,Ruby,Perl,….) • 他システムとの統合(OpenStack,CloudStack,etc..) • 自製ツールへの組み込み • 自動化による工数削減 • 統一されたエラーハンドリングによる開発効率の向上 • DevOps / Immutable Computing が可能に REST-API © 2014 Brocade Communications Systems, Inc. Company Proprietary Information 33
  • 33. THANK YOU 34© 2014 Brocade Communications Systems, Inc. Company Proprietary Information