3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cisco YANG SuiteによるYANGモジュールのブラウジング、RPCメッセージの作成

Last updated at Posted at 2021-10-01

#初めに
構造や、依存関係など、なかなか理解しにくかったYANGを簡単にブラウジングしたり、NETCONFのRPCメッセージを簡単にビルドできるツールがDevNetで紹介されていたので、備忘録的に掲載しようと思います。

#Cisco YANG Suiteとは
Cisco YANG Suiteは、NETCONF、RESTCONF、gNMIなどのYANGプログラマブルインターフェイスを学習したり、検証するためのツールセットです。
グラフィカルインターフェイスでYANGモジュールの参照や、RPCペイロードメッセージを作成することができ、また、ストリーミングテレメトリ用のgRPCダイヤルアウトモデル駆動型テレメトリコレクターも含まれています。 ツール自体のユーザーインターフェイスはHTML5で更新され、Dockerコンテナーで柔軟にデプロイすることができます。

- Cisco YANG Suite

#環境
YANG SuiteはUbuntuへインストールし、対象デバイスはCML2上のCSR1000vを使用しました。

topology.001.jpeg

Ubuntu(20.04.1 LTS (Focal Fossa))
csr1000v-mono-universalk9.17.03.02 (CML2)

#インストール要件と流れ
インストール要件や、手順は下記に詳しく掲載されています。
- YANG Suite in GitHub

インストール要件
YANG Suiteは、DockerコンテナーとしてDocker-composeでインストールするので、YANGSuiteを実行するシステムにDocker、DockerComposeをインストールする必要があります。
今回は、Docker、DockerComposeをインストールしたUbuntu(20.04.1 LTS (Focal Fossa))を使用しました。

インストールの流れ

  • YANG Suiteリポジトリのクローン
  • start_yang_suite.shの実行

以前にstart_yang_suite.shを実行済みの場合はdocker compose upの実行

①YANG Suiteリポジトリのクローン

virl@api:~$ git clone https://github.com/CiscoDevNet/yangsuite
Cloning into 'yangsuite'...
remote: Enumerating objects: 764, done.
remote: Counting objects: 100% (764/764), done.
remote: Compressing objects: 100% (521/521), done.
remote: Total 764 (delta 302), reused 640 (delta 226), pack-reused 0
Receiving objects: 100% (764/764), 25.23 MiB | 2.37 MiB/s, done.
Resolving deltas: 100% (302/302), done.

start_yang_suite.shの実行

virl@api:~$ cd ./yangsuite/docker/
virl@api:~/yangsuite/docker$ sudo ./start_yang_suite.sh
Hello, please setup YANG Suite admin user.
username: cisco
password:
confirm password:
email: example@example.com

Setup test certificates? (y/n): y
################################################################
## Generating self-signed certificates...                     ##
##                                                            ##
## WARNING: Obtain certificates from a trusted authority!     ##
##                                                            ##
## NOTE: Some browsers may still reject these certificates!!  ##
################################################################

Generating a RSA private key
...+++++
.............+++++
writing new private key to 'nginx/nginx-self-signed.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:OSAKA
Locality Name (eg, city) []:OSAKA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:EXAMPLE
Organizational Unit Name (eg, section) []:EXAMPLE
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:example@example.com
Certificates generated...
Building docker containers...
Building yangsuite
(以下省略)

start_yang_suite.shは、ユーザー名、パスワード、電子メールアドレス、および証明書の詳細を設定するように要求してきます。

以下のようなログが出力されればインストール完了です。

yangsuite_1  | spawned uWSGI master process (pid: 35)
yangsuite_1  | spawned uWSGI worker 1 (pid: 39, cores: 1)
yangsuite_1  | spawned uWSGI worker 2 (pid: 40, cores: 1)
yangsuite_1  | spawned uWSGI worker 3 (pid: 41, cores: 1)
yangsuite_1  | spawned uWSGI worker 4 (pid: 42, cores: 1)
yangsuite_1  | spawned uWSGI worker 5 (pid: 43, cores: 1)

インストールしたOSのブラウザから、http://localhost または、https://localhost:8443
へアクセスすれば__YANG Suite__を使用することができます。

外部デバイスからYANG Suiteへアクセスしたい場合は、インストールする前に、rootディレクトリにあるstart_yang_suite.sh、nginxディレクトリにあるnginx.conf、yangsuiteディレクトリにある、dockerfileproduction.py、の__'localhost'の部分を'dockerホストのIPアドレス or FQMN'に書き代えます。
インストール時に要求される証明書の
「Common Name」'dockerホストのIPアドレス or FQMN'__にすれば、外部から『https://{dockerホストのIPアドレス or FQMN}:8443』 でアクセスすることができます。

#YANG Suiteの設定
インストールが完了すれば、YANG Suiteで扱いたいデバイスの登録(Device profiles)、そのデバイスがサポートするYANGモデルの登録(YANG module repository)、そのYANGモデルからYANG Suiteで扱えるようにモジュールセットの作成(YANG module set)などを行います。

YANG Suiteの設定は下記に詳しく掲載されています。
- YANG Suite Docs

####Device profilesの設定
"Setup" > "Device profiles"から、YANG Suiteでアクセスしたいデバイスを登録します。
ルータやスイッチ等のデバイスのホスト名や、IPアドレス、有効にするAPI(gNMI、NETCONF、RESTCONF)の詳細を設定します。
デバイスへのコネクティビティチェックも可能です。

スクリーンショット 2021-09-30 14.27.45.png

スクリーンショット 2021-09-30 14.28.16.png

####YANG module repositoryの作成
"Setup" > "YANG files and repositories"から、それぞれのOSごとにリポジトリを作成します。
リポジトリはDevice profilesと関連付けられ、Device profilesに登録したデバイスのOSでサポートされているYANGモデルを登録します。

スクリーンショット 2021-09-30 14.46.10.png

####YANG module setの作成
"Setup" > "YANG module sets"で、上で作成したYANG module repositoryからYANG module setを作成します。
リポジトリのYANGモジュール全てを指定してYANG module setを作成することもできますが、必要なモジュールとそのモジュールと依存関係のあるモジュールに絞って作成することもできます。YANG Suiteでモジュールをブラウジングするときや、NETCONFやRESTCONFでデバイスからステータスを引き出したり設定を変更したりするときは、このYANG module setsを指定して実行します。

スクリーンショット 2021-09-30 14.56.30.png

#YANG Suiteの利用
"Device profiles"、"YANG files and repositories"、"YANG module sets"の設定が完了すれば、YANGモジュールのブラウジングや、デバイスへのAPIアクセスが可能になります。

YANG Suiteの利用方法は下記に詳しく掲載されています。
- YANG Suite Docs

####ブラウジング
モジュール読み込んで直感的にわかりやすくツリー状に表示してくれます。便利なのは依存関係も解決して表示してくれるところです。
例えば、「ietf-interfaces」モジュールを読み込めば、拡張モジュールである「ietf-ip」モジュールも読み込んでツリーの中に表示してくれます。

スクリーンショット 2021-10-01 14.38.59.png

####NETCONFアクセス
NETCONF get-config RPC
作成したYANG module setを指定すればそのモジュールがツリー状に表示されます。デバイスから引き出したい設定や、ステータスをチェックボックスで選択するだけでRPCメッセージをビルドすることができます。あとは、YANG Suiteがそれを対象デバイスに実行してくれるので、pythonの知識がなくても直感的にNETCONFでデバイスにアクセスし、情報を引き出すことができます。

スクリーンショット 2021-10-01 15.02.48.png

スクリーンショット 2021-10-01 15.03.01.png

NETCONF edit-config RPC
get-configと同じように、作成したYANG module setを指定すればそのモジュールがツリー状に表示されます。設定変更したleafの'Value'や'Operation'に設定値を入力すればRPCメッセージをビルドすることができます。あとはYANG Suiteがそれを対象デバイスに実行してくれるので、NETCONFで直感的にデバイスの設定変更が実現できます。

スクリーンショット 2021-10-01 15.04.52.png

#まとめ
デバイスがサポートするYANGモデルは、デバイスからダウンロードすることができます。pythonのncclientでもできますが、GUIはやっぱり簡単です。ブラウジングに関してはYANGモジュールを依存関係も解析した上でツリー状に表示してくれるので構造が直感的にわかります。API接続もYANGツリーから選択したり、leafにパラメータを記入したりするだけで、RPCメッセージが作成されるので、とても便利です。YANG SuiteでビルドされたRPCメッセージを、ncclientでの自動化に活用することもできるので、かなり使えるのではと感じました。

#参考リンク
- Cisco YANG Suite
- YANG Suite in GitHub
- YANG Suite Docs

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?