※ 本記事の内容を 3 分にまとめ Youtube でも公開しています。あわせてご覧ください!
https://youtu.be/3-7gb_6RD9k
はじめに
この記事は 2020 年に公開された「評価版 NSO を使ってみよう」の Windows 版になります。
Cisco NSO (Network Services Orchestrator) は、YANG モデリング言語を使用したマルチベンダの自動化ツールです。マルチベンダ機器に対して CLI や GUI でプロビジョニングができるだけでなく、NETCONF や RESTCONF といった API を提供し、ベンダに依存しないオペレーションを可能にします。
Cisco NSO には評価版が用意されており、それを使用すると無償で試すことができます(評価目的であり、商用での利用はできません)。この記事では WSL2 (Windows Subsystem for Linux 2) の Ubuntu を使用し、Windows 11 上で Cisco NSO を使用する方法をご紹介します。この記事は評価を目的としており、商用での動作は想定していない点をご了承ください。
必要な作業は下記の 3 ステップになります。それぞれ詳しく紹介して行きます。
- WSL2 のインストール
- NSO のインストールと実行
- デバイスの登録
1. WSL2 のインストール
今回 Cisco NSO と IOS-XR NED を使用しますが、それには 8G 程度のメモリが必要になります。WSL2 では、Windows システムの半分のメモリが割り当てられるので、ここでは 16G のメモリを実装した Windows 11 pro を使用しています。
WSL2 を使うにあたり、まず Windows 11 において、管理者権限でコマンドプロンプトを開きます。その後、下記のコマンドで WSL2 を有効化します。
C:¥Windows¥system32> wsl --install
有効にした後、一度再起動をします。すると Ubuntu のインストールが行われます。しばらくすると、ユーザ名とパスワードの設定になりますので登録を行います。
Ubuntu のプロンプトが表示されたら、NSO に必要なパッケージをインストールします。NSO でサービスパッケージを作成する場合 Make、Ant などのパッケージが必要になりますが、今回は動作させることを目的としますので JDK のみインストールします。
cisco@DESKTOP-O7BT8I4:~$ sudo apt-get update
cisco@DESKTOP-O7BT8I4:~$ sudo apt-get install openjdk-8-jdk
その後、こちらのサイトから必要なファイルをダウンロードします(ダウンロードには CCO ID が必要です)。ここでは NSO 本体と IOS-XR NED をダウンロードします。執筆時点でのファイル名は下記になっています。
- ncs-6.0-cisco-iosxr-7.43-freetrial.signed.bin
- nso-6.0-freetrial.linux.x86_64.signed.bin
ダウンロードしたファイルを、WSL2 の Ubuntu にコピーします。
cisco@DESKTOP-O7BT8I4:~$ cp /mnt/c/Users/cisco/Downloads/*.bin .
cisco@DESKTOP-O7BT8I4:~$ ls
ncs-6.0-cisco-iosxr-7.43-freetrial.signed.bin nso-6.0-freetrial.linux.x86_64.signed.bin
cisco@DESKTOP-O7BT8I4:~$
Cisco NSO や NED は、改ざんを防ぐために証明書付きで配布されています。展開する際、そのまま bash で実行すると、WSL2 に Python 2 が入っていないので、下記のようなエラーになります。
cisco@DESKTOP-O7BT8I4:~$ bash nso-6.0-freetrial.linux.x86_64.signed.bin
Unpacking...
Verifying signature...
nso-6.0-freetrial.linux.x86_64.signed.bin: line 81: python: command not found
nso-6.0-freetrial.linux.x86_64.signed.bin: line 90: python: command not found
ERROR
ERROR Failed to perform signature verification.
ERROR Verification requires Python version 2.7.4 or later.
ERROR
cisco@DESKTOP-O7BT8I4:~$
これは証明書をチェックする Python スクリプトがバージョン 2 にしか対応していないことが原因です。そこで --skip-verification オプションをつけて展開します。Cisco NSO と IOS-XR NED 両方とも同様にして展開します。
cisco@DESKTOP-O7BT8I4:~$ bash ncs-6.0-cisco-iosxr-7.43-freetrial.signed.bin --skip-verification
Unpacking...
cisco@DESKTOP-O7BT8I4:~$ bash nso-6.0-freetrial.linux.x86_64.signed.bin --skip-verification
Unpacking...
cisco@DESKTOP-O7BT8I4:~$
2. NSO のインストールと実行
必要なファイルが展開されたため、Cisco NSO のインストールをします。インストールするには、インストーラファイルに任意のインストール先フォルダを指定するだけです。ここでは NSO-6.0 というフォルダにインストールしています。
cisco@DESKTOP-O7BT8I4:~$ ./nso-6.0.linux.x86_64.installer.bin NSO-6.0
INFO Using temporary directory /tmp/ncs_installer.3879 to stage NCS installation bundle
INFO Unpacked ncs-6.0 in /home/cisco/NSO-6.0
INFO Found and unpacked corresponding DOCUMENTATION_PACKAGE
INFO Found and unpacked corresponding EXAMPLE_PACKAGE
INFO Found and unpacked corresponding JAVA_PACKAGE
INFO Generating default SSH hostkey (this may take some time)
INFO SSH hostkey generated
INFO Generating self-signed certificates for HTTPS
INFO Environment set-up generated in /home/cisco/NSO-6.0/ncsrc
INFO NSO installation script finished
INFO Found and unpacked corresponding NETSIM_PACKAGE
INFO NCS installation complete
cisco@DESKTOP-O7BT8I4:~$
その後、source コマンドを使って Cisco NSO のコマンドが使えるようにします。そして、ncs-setup コマンドで、実行フォルダを作成します。ここでは project1 とします。
cisco@DESKTOP-O7BT8I4:~$ source NSO-6.0/ncsrc
cisco@DESKTOP-O7BT8I4:~$ ncs-setup --dest project1
cisco@DESKTOP-O7BT8I4:~$
プロジェクトフォルダの packages に IOS-XR NED のファイルをコピーします。
cisco@DESKTOP-O7BT8I4:~/project1$ cp ../ncs-6.0-cisco-iosxr-7.43.tar.gz packages/
cisco@DESKTOP-O7BT8I4:~/project1$ ls packages/
ncs-6.0-cisco-iosxr-7.43.tar.gz
cisco@DESKTOP-O7BT8I4:~/project1$
その後、ncs --with-package-reload のコマンドを実行することで NSO が起動し、同時に IOS-XR NED が読み込まれます。ncs_cli コマンドで Cisco NSO の CLI にアクセスし、パッケージが up になっていることを確認します。
cisco@DESKTOP-O7BT8I4:~/project1$ ncs --with-package-reload
cisco@DESKTOP-O7BT8I4:~/project1$ ncs_cli -C -u admin
admin connected from 127.0.0.1 using console on DESKTOP-O7BT8I4
admin@ncs# show packages package * oper-status
packages package cisco-iosxr-cli-7.43
oper-status up
admin@ncs#
これで Cisco NSO が起動しました!http://127.0.0.1:8080/ で Cisco NSO の GUI にもアクセス可能です。
3. デバイスの登録
最後にデバイスを登録してみます。
admin@ncs# config t
admin@ncs(config)# devices device xr1 address 192.168.4.111 device-type cli protocol ssh ned-id cisco-iosxr-cli-7.43
admin@ncs(config-device-xr1)# top
admin@ncs(config)# devices authgroups group XR umap admin remote-name cisco remote-password cisco remote-secondary-password cisco
admin@ncs(config-umap-admin)# top
admin@ncs(config)# devices device xr1 authgroup XR
admin@ncs(config-device-xr1)# top
admin@ncs(config)# devices device xr1 state admin-state unlocked
admin@ncs(config-device-xr1)# commit
Cisco NSO で IOS-XR デバイスを SSH で管理する際、鍵交換の設定を行う必要があります。下記を参照の上、適切な設定を行います。
その後、鍵交換と sync-from ができたら成功です。
admin@ncs# devices fetch-ssh-host-keys
fetch-result {
device xr1
result updated
fingerprint {
algorithm ssh-rsa
value 37:49:ec:18:11:63:fd:52:23:dd:11:3e:16:d3:c1:b8
}
}
admin@ncs# devices sync-from
sync-result {
device xr1
result true
}
admin@ncs#
その他便利な点
このように WSL2 に Cisco NSO をインストールすると、様々な点で便利です。例えば、インストールした Cisco NSO 関連のドキュメントには、Windows のエクスプローラから \\wsl$ のようにしてアクセスできます。
Linux と Mac (Darwin) での配布しかない Cisco NSO ですが、WSL2 を利用することで Windows 11 でも動作することが確認できました。ぜひ Cisco NSO の評価版をお試しください!