RESTCONF エージェント

RESTCONF エージェントについて

Cisco NX-OS RESTCONF は、NETCONF で定義されたデータストアを使用して、YANG バージョン 1 で定義されたデータを設定するための HTTP ベースのプロトコルです。

NETCONF は、設定データストアと、これらのデータストアへのアクセスに使用できる一連の作成、取得、更新、および削除(CRUD)操作を定義します。YANG 言語は、データストア格納ファイル、運用データ、プロトコル操作、イベント通知の構文とセマンティクスを定義します。

Cisco NX-OS RESTCONF は、HTTP 操作を使用して、YANG 定義のデータを含む概念データストアで CRUD 操作を提供します。このデータは、NETCONF データストアを実装するサーバーと互換性があります。

RESTCONF プロトコルは、XML と JSON の両方のペイロードエンコーディングをサポートします。ユーザー認証は、HTTP 基本認証によって行われます。

次の表に、Cisco NX-OS RESTCONF エージェントがサポートするプロトコル操作を示します。

RESTCONF

同等の NETCONF

オプション

NETCONF:なし

HEAD

NETCONF:なし

GET

NETCONF: <get-config>, <get>

POST

NETCONF: <edit-config> (operation="create")

PUT

NETCONF: <edit-config> (operation="create/replace")

PATCH

NETCONF: <edit-config> (operation="merge")

DELETE

NETCONF: <edit-config> (operation="delete")

注意事項と制約事項

RESTCONF エージェントには、次の注意事項と制約事項があります。

  • Cisco NX-OS RESTCONF は、RESTCONF Protocoldraft-ietf-netconf-restconf-10 というタイトルの RFC ドラフトに基づいています。https:/​/​tools.ietf.org/​html/​draft-ietf-netconf-restconf-10 を参照してください。

  • RESTCONF は、RFC 6536 で指定されている拡張ロールベース アクセス コントロール(RBAC)をサポートしていません。「network-admin」ロールを持つユーザのみに、RESTCONF エージェントへのアクセス権が付与されます。

  • 10.2(1) F リリース以降、操作チェックポイント、ロールバック、インストール、CA 証明書のインポート、スイッチのリロード、個々のモジュールのリロード、およびファイルのコピーがサポートされています。

RESTCONF エージェントの使用方法

一般的なコマンド

  • HTTP または HTTPS アクセスを有効にするには、次のコマンドを設定します。

    • feature nxapi

    • nxapi http port 80

    • nxapi https port 443

一般的な制御コマンド

RESTCONF エージェントの [no] feature restconf コマンドを有効または無効にできます。

エージェント ステータスの表示

RESTCONF エージェントのステータスを表示するには、 コマンドを使用し、式 restconf を含めます。show feature
switch-1# show feature | grep restconf
restconf               1          enabled 
switch-1# 

Curl を使用したサーバーへの POST 要求の送信


client-host % curl -X POST -H "Authorization: Basic YWRtaW46Y2lzY28=" -H "Content-Type: application/yang.data+xml" -d '<always>enabled</always><rtrId>2.2.2.2</rtrId>' "http://192.0.20.123/restconf/data/Cisco-NX-OS-device:System/bgp-items/inst-items/dom-items/Dom-list=default" -i

HTTP/1.1 201 Created
Server: nginx/1.7.10
Date: Tue, 27 Sep 2016 20:25:31 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: nxapi_auth=admin:147500853169574134
Status: 201 Created
Location: /System/bgp-items/inst-items/dom-items/Dom-list=default/always/rtrId/

Curl を使用したサーバーへの GET 要求の送信


client-host % curl -X GET -H "Authorization: Basic YWRtaW46Y2lzY28=" -H "Accept: application/yang.data+xml" "http://192.0.20.123/restconf/data/Cisco-NX-OS-device:System/bgp-items/inst-items/dom-items/Dom-list?content=config" -i

HTTP/1.1 200 OK
Server: nginx/1.7.10
Date: Tue, 27 Sep 2016 20:26:03 GMT
Content-Type: application/yang.data+xml
Content-Length: 395
Connection: keep-alive
Set-Cookie: nxapi_auth=admin:147500856185650327
Status: 200 OK

    <Dom-list>
        <name>default</name>
        <always>enabled</always>
        <bestPathIntvl>300</bestPathIntvl>
        <holdIntvl>180</holdIntvl>
        <kaIntvl>60</kaIntvl>
        <maxAsLimit>0</maxAsLimit>
        <pfxPeerTimeout>30</pfxPeerTimeout>
        <pfxPeerWaitTime>90</pfxPeerWaitTime>
        <reConnIntvl>60</reConnIntvl>
        <rtrId>2.2.2.2</rtrId>
    </Dom-list>
client-host %

RESTCONF エージェントのトラブルシューティング

接続のトラブルシューティング

  • feature nxapi コマンドを発行して、Web サーバーを有効にします。

  • HTTP 用にポートを開くように nxapi http port 80 コマンドが構成されていることを確認します。

  • HTTPS 用にポートを開くように nxapi https port 443 コマンドが構成されていることを確認します。

  • スイッチの管理ポートに ping を実行して、スイッチが到達可能であることを確認します。

エフェメラル データ

RESTCONF のエフェメラル データについて

この機能は、エフェメラル データへのアクセスを提供します。エフェメラル データは、大量のデータです。DME は、各バッチがメモリ使用量の観点から管理可能なサイズになるように、データを取得するバッチ メカニズムを提供します。バッチのサイズは、取得する MO の数です。

パブリッシュされた Cisco-NX-OS-device.yang ファイルの「Ephemeral data」というコメントで、どのデータがエフェメラルであるかに関する情報を確認できます。

リクエスト内の URI が以下を指している場合にのみ、エフェメラル データからの出力が返されます。

  • エフェメラル データのリーフ

  • エフェメラル データの子を持つコンテナまたはリスト

  • 直接のエフェメラル データの子を持つリストをラップするために使用される空のコンテナ

システム レベルの GET クエリは、エフェメラル データを返しません。

RESTCONF のエフェメラル データの例

これは、エフェメラル データを取得する例です。

クライアントは、次の GET 要求メッセージを送信する場合があります。

GET /restconf/data/Cisco-NX-OS-device:System//urib-items/table4-items/Table4-list=management/route4-items HTTP/1.1
   Host: example.com
   Accept: application/yang.data+json
 
   The server might respond:
 
      HTTP/1.1 200 OK
      Date: Fri, 06 Mar 2020 11:10:30 GMT
      Server: nginx/1.7.10
      Content-Type: application/yang.data+json
 
      {
          "route4-items": {
               "Route4-list": [{
                   "prefix": "172.23.167.255/32",
                   "flags": "0",
                   ...

実行操作

RESTCONF の操作コマンドについて

この機能は、スイッチでモデル駆動型操作コマンドを実行する方法を提供します。

次に、サポートされている実行 RPC のリストを示します。RPC に関する情報は、公開されている Cisco-NX-OS-device.yang ファイルで確認できます。

表 1. RESTCONF でのモデル駆動型操作について

オペレーション

RESTCONF RPC

CLI

チェックポイント

checkpoint

checkpoint <name>

checkpoint <file>

ロールバック

ロールバック

rollback running-config checkpoint <name>

rollback running-config checkpoint <file>

インストールするもの

install_all_nxos

install_add

install_activate

install_deactivate

install_commit

install_remove

すべての nxos をインストールする <image>

install {add |アクティブ化 |非アクティブ化 |コミット | remove}<rpm>

暗号化証明書のインポート

import_ca_certificate

crypto ca import <trustpoint> pkcs12 <file> <passphrase>

スイッチのリロードまたはモジュールのリロード

reload

reload [タイマー<seconds>]

モジュールのリロード<module number>

ファイルのコピー

copy

コピー<destination><source>

RESTCONF 操作コマンドの例

チェックポイント RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

POST /restconf/operations/Cisco-NX-OS-device:checkpoint
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "name": "checkpoint-1",
                   "description": "testing checkpoint through Restconf"
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

ロールバック RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

POST /restconf/operations/Cisco-NX-OS-device:rollback
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "name": "checkpoint-1",
                   "action": "create”
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

インストール RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

POST /restconf/operations/Cisco-NX-OS-device:install_all_nxos
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "nxos": "bootflash:nxos.10.1.1-jcco.bin"            
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

CA 証明書 RPC のインポートの例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

The client might send the following POST request message:
POST /restconf/operations/Cisco-NX-OS-device:import_ca_certificate
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "trustpoint": "mytrustpoint",
                   "pkcs12": "bootflash:server.pfx",
                   "passphrase": "mypassphrase"
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

スイッチリロード RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

POST /restconf/operations/Cisco-NX-OS-device:reload
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

モジュールリロード RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

The client might send the following POST request message:
POST /restconf/operations/Cisco-NX-OS-device:reload
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "module": "31"
               }
          } 

The server might respond:
      HTTP/1.1 204 No content

コピー ファイル RPC の例

クライアントは、次のような POST 要求メッセージを送信する場合があります。

POST /restconf/operations/Cisco-NX-OS-device:reload
    Accept: application/yang.operation+json,application/yang.errors+json 
    Content-type: application/yang.operation+json
    Body: {
               "input": {
                   "source": "tftp://10.1.1.1/users/myname/config1.txt",
                   "destination": "bootflash:",
                   "vrf": "management"
               }
          } 

The server might respond:
      HTTP/1.1 204 No content