前書き
下記の記事でRESTCONFの使い方を説明しました。 www.it-enjoy.com
ただ、RESTCONFは任意のshow commandは実行できず、 あらかじめYANGで定義された値を読み書きできる、というものです。
YANGを大まかに説明すると 「〇〇というコマンドで××という値が設定できるよ、入力可能な範囲は0から100の数値」 というような定義付けを行ったものです。
では、何が定義されているか、どうやって確認すれば良いのでしょう?
例えばCisco IOS-XEのYANGは下記で公開されています。
github.com
とはいえ、下記のようなファイルを見たところで、見やすさに欠けるような・・・
というわけでリファレンスを探したところ、以下の記事を見つけました。
IOS-XEのRESTCONF APIドキュメントに関して - Cisco Community
Cisco従業員の方のコメントをやや乱暴に解釈すると、 YANGが公開されているのでそれを自分で見てね!詳細ドキュメントは無いです! という状態のようです。
というわけでYANGの見方を調べないとどうにもならないことがわかりました。
見やすい方法を模索してみる
更に調べていると、下記のようなツールを発見。 どうやらツリー構造で表示できるHTMLファイルを出力してくれるらしい。 JavaScript Tree · mbj4668/pyang Wiki · GitHub
ダウンロード
右側のDownloadsから、「pyang-1.5.tar.gz」をダウンロードします。
pyangのインストール
検証用のCentOSがあるので、こちらにインストールすることにします。
tar xfvz pyang-1.5.tar.gz cd pyang-1.5 python setup.py install --prefix=/usr/local
YANGファイルのダウンロード
Githubから必要なYANGファイルを持ってきます。
cd /root git clone https://github.com/YangModels/yang/
使い方
ローカルでWebサーバ(httpd)が動いていたので、Webrootのディレクトリに保存します。 CiscoのIOS-XE Version 16.12.1のYANGから、 Cisco-IOS-XE-interfaces-oper.yang をGUIで見たいときは、 下記のように実行すると、HTMLファイルが作成されます。
cd /root/yang/vendor/cisco/xe/16121 pyang -f jstree Cisco-IOS-XE-interfaces-oper.yang > /var/www/html/Cisco-IOS-XE-interfaces-oper.html
表示結果
CentOSでブラウザを起動し、下記のように入力すると表示されます。 ツリー展開できるので、割と見やすい形かなと思います。
http://localhost/Cisco-IOS-XE-interfaces-oper.html
見方
右の方に「Path」という表記があるので紛らわしいのですが、 左側のツリー構造から辿ります。
例えば、admin-status の値を取得したければ、 下記のようなツリー構造であることを確認します。
大まかなルールとして、 https://IPアドレス/restconf/data/ に続けてツリー構造を入力します。 interface[name]となっているところは、interface=GigabitEthernet1 のようにします。
METHOD | URL |
---|---|
GET | https://192.168.1.1/restconf/data/Cisco-IOS-XE-interfaces-oper:interfaces/interface=GigabitEthernet1/admin-status |
結果
{ "Cisco-IOS-XE-interfaces-oper:admin-status": "if-state-up" }
後書き
pyangは、CLIでtree構造を表示するのが主流で、Web上に解説記事もたくさんあるのですが、 CLIだと見るのに慣れが必要なので、他の手法がないか調べた結果を記事にしてみました。
とはいえ、いずれの場合でも、どの値にアクセスできるかは、 ある程度YANGのファイル名やツリー構造から推測するしかなく、 運用の前に実際のshow コマンドの値と見比べたり、 保守契約先経由でメーカに確認して裏を取るのが安心だと思います。