nx-api ·...

14
NX-API NX-API について, 1 ページ NX-API の使用, 3 ページ その他の参考資料, 14 ページ NX-API について Cisco Nexus デバイスでは、コマンドライン インターフェイス(CLI)はデバイス上のみで実行さ れます。NX-API HTTP/HTTPS を使ってスイッチの外部で CLI を使用できるようにすることで、 これらの CLI のアクセス性を改善します。この拡張は、Cisco Nexus 7000 シリーズ デバイス上の 既存の Cisco Nexus CLI システムに使用できます。NX-API は、show コマンドおよび設定をサ ポートします。 NX-API は、JSON-RPCJSONXML 形式をサポートします。 トランスポート層 NX-API では、トランスポート層として HTTP または HTTPS を使用します。CLI は、HTTP また HTTPS POST の本体にエンコードされます。 NX-API バックエンドは、Nginx HTTP サーバを使用します。 メッセージ形式 NX-API は、Cisco Nexus 7000 シリーズの CLI システムの拡張であり、XML 出力をサポートしま す。NX-API は、特定のコマンドの JSON 出力形式もサポートしています。 Cisco Nexus 7000 シリーズ NX-OS プログラマビリティ ガイド 1

Upload: others

Post on 09-Sep-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

NX-API

• NX-APIについて, 1 ページ

• NX-APIの使用, 3 ページ

• その他の参考資料, 14 ページ

NX-API についてCisco Nexusデバイスでは、コマンドラインインターフェイス(CLI)はデバイス上のみで実行されます。NX-APIはHTTP/HTTPSを使ってスイッチの外部でCLIを使用できるようにすることで、これらの CLIのアクセス性を改善します。この拡張は、Cisco Nexus 7000シリーズデバイス上の既存の Cisco Nexusの CLIシステムに使用できます。NX-APIは、showコマンドおよび設定をサポートします。

NX-APIは、JSON-RPC、JSON、XML形式をサポートします。

トランスポート層

NX-APIでは、トランスポート層として HTTPまたは HTTPSを使用します。CLIは、HTTPまたは HTTPS POSTの本体にエンコードされます。

NX-APIバックエンドは、Nginx HTTPサーバを使用します。

メッセージ形式

NX-APIは、Cisco Nexus 7000シリーズの CLIシステムの拡張であり、XML出力をサポートします。NX-APIは、特定のコマンドの JSON出力形式もサポートしています。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド1

Page 2: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

(注) • NX-APIの XML出力には、わかりやすい形式で情報が示されます。

• NX-APIの XMLは、Cisco NX-OS NETCONF実装に直接マッピングするわけではありません。

• NX-APIの XML出力は、JSONに変換できます。

セキュリティ

NX-APIは、HTTPSをサポートしています。HTTPSを使用する場合、デバイスへのすべての通信は暗号化されます。

NX-APIは、デバイスの認証システムに統合されています。ユーザは、NX-API経由でデバイスにアクセスするための適切なアカウントを持つ必要があります。NX-APIでは、HTTP基本認証を使用します。すべての要求の HTTPヘッダーには、ユーザ名とパスワードが含まれる必要があります。

ユーザのログイン資格情報を保護するには、HTTPSの使用を検討する必要があります。(注)

feature manager CLIコマンドを使用して、NX-APIを有効化できます。NX-APIはデフォルトでは無効化されています。

ユーザがはじめて認証に成功したときに、NX-APIは、nxapi_authというセッションベースのCookieを提供します。デバイスに送信される後続のNX-API要求のすべてには、セッションCookieとともに、ユーザ名とパスワードが含まれます。ユーザ名とパスワードをセッションCookieとともに使用することにより、完全な認証プロセスの再実行が省略されます。セッションCookieが後続の要求に含まれていない場合は、別のセッションCookieが要求され、認証プロセスで提供されます。不要な認証プロセスの回避は、デバイスの負荷軽減に役立ちます。

nxapi_auth Cookieは、600秒(10分)で期限切れとなります。この値は固定されており、変更できません。

(注)

NX-APIは、スイッチ上の Programmable Authentication Module(PAM)を使用して認証を行います。Cookieを使用して PAMの認証数を減らすことにより、PAMの負荷が軽減されます。

(注)

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド2

NX-APIセキュリティ

Page 3: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

NX-API の使用Cisco Nexus 7000シリーズデバイスのコマンド、コマンドタイプ、出力タイプは、HTTP/HTTPsPOSTの本体にCLIをエンコードすることによって、NX-APIを使用して入力されます。要求に対する応答は、XML、JSON、または JSON-RPCの出力形式で返されます。

NX-APIの応答コードの詳細については、NX-API応答コードの表を参照してください。(注)

デバイスで featuremanager CLIコマンドを使用してNX-APIを有効化する必要があります。デフォルトでは、NX-APIは無効化されています。

次の例は、NX-APIサンドボックスの設定および起動の方法を示しています。

•管理インターフェイスを有効にします。switch# conf tswitch(config)# interface mgmt 0switch(config)# ip address 198.51.100.1/24switch(config)# vrf context managmentswitch(config)# ip route 203.0.113.1/0 1.2.3.1

• NX-API nxapi機能を有効にします。switch# conf tswitch(config)# feature nxapi

次の例は、要求と XML形式の応答を示しています。

要求:

<?xml version="1.0"?><ins_api><version>1.0</version><type>cli_show</type><chunk>0</chunk><sid>sid</sid><input>show switchname</input><output_format>xml</output_format>

</ins_api>

応答:

<?xml version="1.0" encoding="UTF-8"?><ins_api><type>cli_show</type><version>1.0</version><sid>eoc</sid><outputs><output><body><hostname>switch</hostname></body><input>show switchname</input><msg>Success</msg><code>200</code>

</output></outputs>

</ins_api>

次の例は、要求と JSON形式の応答を示しています。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド3

NX-APINX-API の使用

Page 4: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

要求:

{"ins_api": {"version": "1.0","type": "cli_show","chunk": "0","sid": "1","input": "show switchname","output_format": "json"

}}

応答:

{"ins_api": {"type": "cli_show","version": "1.0","sid": "eoc","outputs": {"output": {"input": "show switchname","msg": "Success","code": "200","body": {"hostname": "switch"

}}

}}

}

次の例は、要求と JSON-RPC形式の応答を示しています。

要求:

[{"jsonrpc": "2.0","method": "cli","params": {"cmd": "show switchname","version": 1

},"id": 1

}]

応答:

{"jsonrpc": "2.0","result": {"body": {"hostname": "switch"

}},"id": 1

}

要求の送信

NX-API要求を HTTP経由で送信するには、http://<ip-address-of-switch>/insを使用します。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド4

NX-API要求の送信

Page 5: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

NX-API要求を HTTPS経由でより安全に送信するには、https://<ip-address-of-switch>/insを使用します。

管理インターフェイスの IPアドレスは、<ip-address-of-switch>です。

HTTP要求のヘッダーには、コンテンツタイプフィールドが含まれている必要があります。JSON-RPC要求の場合、これは application/json-rpcと同等であることが必要です。独自形式

の場合、これは、使用される入力形式に応じてtext/xmlまたはtext/jsonのいずれかになりま

す。

(注)

XSD ファイルの取得

ステップ 1 ブラウザで次の URLのシスコソフトウェアダウンロードサイトに移動します。http://software.cisco.com/download/navigator.html

[Download Software]ページが表示されます。

ステップ 2 [Select a Product]リストから、[Switches] > [DataCenterSwitches] > [platform] > [model]を選択します。

ステップ 3 登録シスコユーザとしてログインしていない場合は、すぐにログインするように求められます。

ステップ 4 [Select a Software Type]リストから、[NX-OSXMLSchemaDefinition]を選択します。

ステップ 5 目的のリリースを選択し、[Download]をクリックします。

ステップ 6 要求された場合には、強力な暗号化ソフトウェアイメージをダウンロードする資格申請の手順に従ってく

ださい。

[Cisco End User License Agreement]が開きます。

ステップ 7 [Agree]をクリックし、手順に従ってファイルを PCにダウンロードします。

NX-API サンドボックスNX-APIサンドボックスは、HTTPまたは HTTPSを使用して Cisco Nexus 7000シリーズデバイスのコマンド、コマンドタイプ、出力タイプを入力する場合に使用するWebベースのユーザインターフェイスです。要求を送信すると、出力応答が表示されます。

デフォルトでは、NX-APIは無効化されています。スイッチで feature manager CLIコマンドを使用して NX-APIの有効化を開始します。次に、nxapi sandboxコマンドで NX-APIを有効化します。

ブラウザを使用して NX-APIサンドボックスにアクセスします。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド5

NX-APIXSD ファイルの取得

Page 6: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

NX-APIサンドボックスを使用する場合、Firefoxブラウザのリリース 24.0以降を使用することが推奨されます。

(注)

次の例は、NX-APIサンドボックスの設定および起動の方法を示しています。

•管理インターフェイスを有効にします。switch# conf tswitch(config)# interface mgmt 0switch(config)# ip address 198.51.100.1/24switch(config)# vrf context managmentswitch(config)# ip route 203.0.113.1/0 1.2.3.1

• NX-API nxapi機能を有効にします。switch# conf tswitch(config)# feature nxapiswitch(config)# nxapi sandbox

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド6

NX-APINX-API サンドボックス

Page 7: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

•ブラウザを開いてhttp://mgmt-ipと入力し、NX-APIサンドボックスを起動します。次の図は、要求と出力応答の例です。

図 1:要求と出力応答の例を示した NX-API サンドボックス

NX-APIサンドボックスでは、上部のペインにコマンド、コマンドタイプ、出力タイプを指定します。リクエストを送信するには、左ペインの上の [POST Request]ボタンをクリックします。要求要素の簡単な説明が左ペインの下に表示されます。

要求が送信された後、出力応答が右側のペインに表示されます。

NX-APIを管理するコマンドの説明および要求と出力応答の要素に関する説明については、以降の項で示します。

NX-API 管理コマンド次の表に示す CLIコマンドを使用して、NX-APIの有効化や管理を行えます。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド7

NX-APINX-API 管理コマンド

Page 8: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

表 1:NX-API 管理コマンド

説明NX-API 管理コマンド

NX-APIを有効化します。feature nxapi

NX-APIを無効化します。no feature nxapi

ポートを指定します。nxapi {http|https} portport

HTTPまたは HTTPSを無効化します。no nxapi {http|https}

ポート情報、NX-APIの有効または無効ステータス、サンドボックスの有効または無効ステータスを表示します。

show nxapi

NX-APIサンドボックスを有効化します。nxapi sandbox

NX-APIサンドボックスを無効化します。no nxapi sandbox

次のいずれかのアップロードを指定します。

• certpathが指定されている場合は HTTPS証明書。

• keypathが指定されている場合は HTTPSキー。

nxapi certificatecertpathkeykeypath

NX-API 要求要素NX-API要求要素は、XML形式、JSON形式、または JSON-RPC形式でデバイスに送信されます。要求の HTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

入力される要求の形式がXMLまたは JSONの場合、次の表に示すNX-API要素を使用してCLIコマンドを指定します。

表 2:NX-API 要求要素

説明NX-API 要求要素

NX-APIのバージョンを指定します。version

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド8

NX-APINX-API 要求要素

Page 9: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

説明NX-API 要求要素

実行する CLIコマンドのタイプを指定します。

次のタイプのコマンドがサポートされます。

• cli_show

構造化された出力を示す CLI showコマンド。コマンドが XML出力をサポートしない場合、エラーメッセージが返されます。

• cli_show_ascii

ASCII出力を示す CLI showコマンド。これは、ASCII出力を解析する既存のスクリプトに合わせられます。

ユーザは、最小限の変更で既存のスクリプトを使用で

きます。

• cli_conf

CLI設定コマンド。

(注) •各コマンドは、現在のユーザ権限でのみ実行できます。

•メッセージタイプが ASCIIの場合、出力でパイプオペレーションがサポートされます。

出力が XML形式の場合、パイプオペレーションはサポートされません。

•最大10個の連続した showコマンドがサポートされます。showコマンドの数が10個を超えると、11番目以降のコマンドは無視されます。

•インタラクティブコマンドはサポートされません。

type

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド9

NX-APINX-API 要求要素

Page 10: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

説明NX-API 要求要素

一部の showコマンドは、多数の出力を返すことができます。コマンド全体が完了する前に出力の処理を開始する

NX-APIクライアントでは、NX-APIは showコマンドの出力チャンクをサポートします。

チャンクの有効化または無効化には、次の設定を使用しま

す。

出力をチャンクしない。0

出力をチャンクする。1

showコマンドのみがチャンクをサポートします。連続して showコマンドが入力された場合、最初のコマンドのみがチャンクされて返されます。

出力メッセージの形式は XMLです(XMLがデフォルト)。特殊文字(<や >など)は有効なXMLメッセージになるように変換されます(<は &ltに変換され、>は &gtに変換されます)。

チャンクされた出力は、XML SAXを使用して解析できます。

(注)

チャンクを有効化すると、メッセージ形式はXMLに限定されます。チャンクが有効化されている場

合、JSON出力形式はサポートされません。

(注)

chunk

セッション ID要素は、応答メッセージがチャンクされている場合のみ有効です。メッセージの次のチャンクを取得

するには、前の応答メッセージの sidと一致するように sidを指定する必要があります。

sid

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド10

NX-APINX-API 要求要素

Page 11: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

説明NX-API 要求要素

inputには、1つまたは複数のコマンドを含むことができます。ただし、異なるメッセージタイプに属するコマンドを

混同することはできません。たとえば、showコマンドはcli_showメッセージタイプであり、cli_confモードではサポートされません。

複数のコマンドは「 ;」で区切ります(;の前後にそれぞれ 1つの空白文字が必要です)。

(注)

次に、複数のコマンドの例を示します。

show version ; show interface brief ; showvlan

cli_show

interface Eth4/1 ; no shut ; switchportcli_conf

input

使用可能な出力メッセージ形式は次のとおりです。

出力を XML形式で指定します。xml

出力を JSON形式で指定します。json

Cisco Nexus 7000シリーズのCLIは、XML出力をサポートします。これは、JSON出力が XMLから変換されることを意味します。この変換はス

イッチで処理されます。

コンピューティングのオーバーヘッドを管理する

ために、JSON出力の処理は出力の量によって決定されます。出力が 1 MBを超える場合、出力はXML形式で返されます。出力がチャンクされる場合は、XML出力のみがサポートされます。

HTTP/HTTPSヘッダー内のコンテンツタイプヘッダーは、応答形式のタイプを示しています(XMLまたは JSON)。

(注)

output_format

入力される要求の形式が JSON-RPCの場合、次の表に示す NX-API要素を使用して CLIコマンドを指定します。

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド11

NX-APINX-API 要求要素

Page 12: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

表 3:NX-API 要求要素

説明NX-API 要求要素

JSON-RPCプロトコルのバージョンを指定する文字列。

バージョンは 2.0である必要があります。

jsonrpc

呼び出されるメソッドの名前を含む文字列。

NX-APIでは、次のいずれかをサポートします。

• cliの showコマンドまたは設定コマンド

• cli_asciiの showコマンドまたは設定コマンド(書式設定なしの出力)

method

メソッドの呼び出し時に使用されるパラメータ

の値を保持する構造化された値。

これには、以下の情報が含まれている必要があ

ります。

• cmd:CLIコマンド

• version:NX-API要求バージョンの識別子

params

クライアントによって確立されたオプションの

識別子。これが指定されている場合は、文字

列、数字、または Null値を含む必要があります。通常、値はNullにすることはできず、数字に少数を含むこともできません。ユーザが idパラメータを指定しない場合、要求は単純な通知

であるとサーバに見なされるため、応答はあり

ません。例:id : 1

id

NX-API 応答要素入力される要求の形式が XMLまたは JSONの場合、応答には以下の要素が含まれます。

表 4:NX-API 応答要素

説明NX-API 応答要素

NX-APIのバージョン。version

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド12

NX-APINX-API 応答要素

Page 13: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

説明NX-API 応答要素

実行するコマンドのタイプ。type

応答のセッション ID。この要素は、応答メッセージがチャンクされている場合のみ有効です。

sid

すべてのコマンド出力を囲むタグ。

複数のコマンドが cli_showまたは cli_show_asciiに存在する場合、各コマンドの出力は単一の outputタグで囲まれます。

メッセージタイプが cli_confの場合、cli_confコマンドにはコンテキストが必要であるため、すべてのコマンドに対して単一のoutputタグが使用されます。

outputs

単一のコマンド出力を含むタグ。

cli_confメッセージタイプの場合、この要素にはすべてのコマンドの出力が含まれています。

output

要求で指定された単一のコマンドを囲むタグ。この要素は、要求

入力要素を適切な応答出力要素に関連付けるために役立ちます。

input

コマンド応答の本文。body

コマンドの実行から返されるエラーコード。

NX-APIは、Hypertext Transfer Protocol(HTTP)のステータスコードレジストリ

(http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)に記載されている標準 HTTPエラーコードを使用します。

code

返されたエラーコードに関連付けられているエラーメッセージ。msg

JSON-RPC 要求に対する NX-API 応答要素すべての JSON-RPC要求の応答オブジェクトは、次の表に示す JSON-RPC 2.0応答形式になります。

説明NX-API 応答要素

JSON-RPCプロトコルのバージョンを指定する文字列。必ず 2.0。

jsonrpc

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド13

NX-APINX-API 応答要素

Page 14: NX-API · nx-api要求要素は、xml形式、json形式、またはjson-rpc形式でデバイスに送信されます。 要求のHTTPヘッダーにより、要求のコンテンツタイプが特定される必要があります。

説明NX-API 応答要素

このフィールドは成功時にのみ含まれます。

このフィールドの値には、要求されたCLI出力が含まれます。

result

このフィールドはエラー時にのみ含まれます

(resultオブジェクトと相互排他的)。

エラーオブジェクトには、以下の要素が含まれ

ています。

• code:JSON-RPCの仕様によって指定された整数のエラーコード。

• message:エラーコードに対応し、ユーザが判読できる文字列。

• data:有用な情報(CLIエラーメッセージや追加情報など)を含むオプションの構

造。

error

対応する要求オブジェクトの idと同じ値。要求内の idの解析中にエラーが発生した場合、この値は Nullです。

id

その他の参考資料ここでは、NX-APIの実装に関する追加情報を提供します。

• NX-API DevNet Community

• NX-API Github(Nexus 7000)

• NX-API Github(NX-OSのプログラマビリティスクリプト)

Cisco Nexus 7000 シリーズ NX-OS プログラマビリティガイド14

NX-APIその他の参考資料