2020-07-25 01:26 AM
NETCONF 機器の操作を行うためには、接続先機器のデータモデル情報が必要です。 以前の記事で、NETCONFの get-schema を使用してそれらを取得する方法について投稿しましたが、NSO 5.2 以降ではそれらの機能が内蔵されています。
https://community.cisco.com/t5/-/-/ta-p/3320213
記事最後に紹介した、Pioneer のようなものがネイティブで使用可能となっています。
機器が使用する yang モデルの yang ファイルは、各ベンダWebサイト等で取得できることもありますが、バージョン毎に違うため、この方法では機器から確実にそのバージョンのものが取得出来ます。
このコマンドはdevtools の一部となっています。CLI上では通常確認できず、以下のようにそれを使用できるよう、devtools を true にしてください。NSO に対する config ではありませんので、そのセッションのみで有効です。次のログイン後にはオフとなります。
admin@ncs# devtools true
admin@ncs# netconf-ned-builder ?
Possible completions:
profile This list contains profiles, which are reusable selections of modules.
project An instance of NED project.
admin@ncs#
netconf-ned-builder コマンドによるNED作成は、運用環境において実施することを想定しておりません。Yangのダウンロード、NEDのコンパイルには多少なりとも負荷を与えることになりますので、運用環境で実施する場合はご注意下さい。
NEDの作成を行いたい機器を、/devices/device へ登録します。この時点では使用したいNEDはまだありませんので、通常の netconf NED 機器として設定します。
admin@ncs# show running-config devices device iosxe devices device iosxe address 192.168.1.1 port 830 authgroup xe device-type netconf ned-id netconf state admin-state unlocked ! admin@ncs#
この例では、接続先機器は CSR1000v を使用しています。netconf はすでに有効化されており、接続できる状態です。この後、SSH Key の取得を行い、準備完了です。
admin@ncs# devices device iosxe ssh fetch-host-keys result updated fingerprint { algorithm ssh-rsa value a1:6f:56:3a:40:96:00:db:6e:90:33:af:73:35:8b:ff } admin@ncs#
netconf-ned-builder 自体の設定を行います。接続に使用するデバイスを選択したり、作成する NED の名前やバージョンを設定します。名前とバージョンは任意ですが、接続先機器用のものとなるため、それに合わせておくと後からわかりやすく、便利です。
admin@ncs(config)# netconf-ned-builder project iosxe 16.9.2 Value for 'device' [iosxe]: Value for 'local-user' (): cisco Value for 'vendor' (): Cisco admin@ncs(config-project-iosxe/16.9.2)# max-download-threads 1 admin@ncs(config-project-iosxe/16.9.2)# commit
Commit complete.
admin@ncs(config-project-iosxe/16.9.2)#
max-download-threads 1 は、必要に応じて付加します。機器に対して、デフォルトでは 3 つまでTCPセッションを作成し、同時にダウンロードを行います。接続先側の状況に合わせて設定してください。
設定が完了しましたので、確認をします。成果物は以下のディレクトリに出力されます。
admin@ncs# show netconf-ned-builder
netconf-ned-builder project iosxe 16.9.2
download-cache-path /private/tmp/csc1/ncs-run/state/netconf-ned-builder/cache/iosxe-nc-16.9.2
ned-directory-path /private/tmp/csc1/ncs-run/state/netconf-ned-builder/iosxe-nc-16.9.2
admin@ncs#
実際に機器へ接続し、使用されているモジュールのリストを取得します。
admin@ncs# netconf-ned-builder project iosxe 16.9.2 fetch-module-list
admin@ncs#
取得したモジュールのリストは以下のコマンドで確認出来ます。
admin@ncs# show netconf-ned-builder project iosxe 16.9.2 module module ATM-FORUM-TC-MIB "" namespace urn:ietf:params:xml:ns:yang:smiv2:ATM-FORUM-TC-MIB location [ NETCONF http://localhost:8008/restconf/tailf/modules/ATM-FORUM-TC-MIB ] module ATM-MIB 1998-10-19 namespace urn:ietf:params:xml:ns:yang:smiv2:ATM-MIB location [ NETCONF http://localhost:8008/restconf/tailf/modules/ATM-MIB/1998-10-19 ] module ATM-TC-MIB 1998-10-19 namespace urn:ietf:params:xml:ns:yang:smiv2:ATM-TC-MIB location [ NETCONF http://localhost:8008/restconf/tailf/modules/ATM-TC-MIB/1998-10-19 ] ...
admin@ncs# netconf-ned-builder project iosxe 16.9.2 module <module name> <revision> select
admin@ncs# netconf-ned-builder project iosxe 16.9.2 module * * select
admin@ncs# show netconf-ned-builder project iosxe 16.9.2 module status NAME REVISION STATUS ------------------------------------------------------------------- ATM-FORUM-TC-MIB selected,downloaded ATM-MIB 1998-10-19 selected,downloaded ATM-TC-MIB 1998-10-19 selected,downloaded BGP4-MIB 1994-05-05 selected,downloaded BRIDGE-MIB 2005-09-19 selected,downloaded ..... CISCO-QOS-PIB-MIB 2007-08-29 selected,downloaded CISCO-RADIUS-EXT-MIB 2010-05-25 selected,pending CISCO-RF-MIB 2005-09-01 selected CISCO-RTTMON-MIB 2012-08-16 selected,pending CISCO-RTTMON-TC-MIB 2012-05-25 selected CISCO-SESS-BORDER-CTRLR-CALL-STA 2010-09-03 selected TS-MIB CISCO-SESS-BORDER-CTRLR-STATS-MI 2010-09-15 selected B CISCO-SIP-UA-MIB 2004-02-19 selected CISCO-SMI 2012-08-29 selected ....
ここまでで必要な yang ファイルが取得出来ましたので、次にそれを使用可能なようにコンパイルを行う必要があります。netconf-ned-builder で全ての作業を完了させる場合は、NSO CLI上からコンパイルを指示出来ます。NEDパッケージとして出力し、通常のパッケージと同様に手動でコンパイルすることも出来ます。
netconf-ned-builder コマンドのオプション
build-ned | コンパイルを開始する |
export-ned | build-ned でコンパイルされたモジュールを含めた、tar.gz パッケージファイルを作成する |
make-development-ned | NED をユーザが手動でコンパイルできるよう、通常のNEDパッケージディレクトリを作成する。NETSIMも作成される。 |
NEDをコンパイルします。成果物は show netconf-ned-builder で表示されるディレクトリに作成されます。
admin@ncs# netconf-ned-builder project iosxe 16.9.2 build-ned
admin@ncs# show netconf-ned-builder project ned-directory-path FAMILY MAJOR NAME VERSION NED DIRECTORY PATH -------------------------------------------------------------------------------------- iosxe 16.9.2 /path/ncs-run/state/netconf-ned-builder/iosxe-nc-16.9.2 admin@ncs# exit
$ ls -la /path/ncs-run/state/netconf-ned-builder/iosxe-nc-16.9.2
total 4
drwxr-xr-x 5 akiwamot wheel 160 Jul 25 00:03 .
drwxr-xr-x 4 akiwamot wheel 128 Jul 24 23:49 ..
drwxr-xr-x 422 akiwamot wheel 13504 Jul 25 00:07 load-dir
-rw-r--r-- 1 akiwamot wheel 516 Jul 25 00:03 package-meta-data.xml
drwxr-xr-x 4 akiwamot wheel 128 Jul 25 00:07 src
$
作成されたファイル・ディレクトリを、NSOが使用可能な tar.gz ファイルに圧縮して保存します。
admin@ncs# netconf-ned-builder project iosxe 16.9.2 export-ned to-directory packages
tar-file /path/ncs-run/packages/ncs-5.3-iosxe-nc-16.9.2.tar.gz
admin@ncs#
通常の make コマンドでコンパイルが可能なよう、Makefile が含まれたパッケージディレクトリを作成します。netsim も作成されるため、ここで作られたNEDを使ってアプリケーション開発に使用できます。
admin@ncs# netconf-ned-builder project iosxe 16.9.2 make-development-ned in-directory packages
ned-path packages/iosxe-nc-16.9.2
admin@ncs#
admin@ncs# exit
$ cd packages/iosxe-nc-16.9.2/
$ ls -la
total 0
drwxr-xr-x 5 akiwamot wheel 160 Jul 25 00:56 .
drwxrwxrwx 4 akiwamot wheel 128 Jul 25 00:56 ..
drwxr-xr-x 5 akiwamot wheel 160 Jul 25 00:56 netsim
drwxr-xr-x 3 akiwamot wheel 96 Jul 25 00:56 python
drwxr-xr-x 6 akiwamot wheel 192 Jul 25 00:56 src
$
make コマンドでコンパイルを行います。これは他のNEDと同様です。
$ cd src
$ ls -al
total 8
drwxr-xr-x 6 akiwamot wheel 192 Jul 25 00:56 .
drwxr-xr-x 5 akiwamot wheel 160 Jul 25 00:56 ..
-rw-r--r-- 1 akiwamot wheel 2298 Jul 25 00:56 Makefile
drwxr-xr-x 4 akiwamot wheel 128 Jul 25 00:56 java
-rw-r--r-- 1 akiwamot wheel 445 Jul 25 00:56 package-meta-data.xml.in
drwxr-xr-x 446 akiwamot wheel 14272 Jul 25 00:56 yang
$ make
....
$
旧来の方法では、以下の記事を紹介しておりました。旧バージョンのNSOについては、以下を参考にしてください。
https://community.cisco.com/t5/-/-/ta-p/3320121
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます