12
5

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 5 years have passed since last update.

Cisco Systems JapanAdvent Calendar 2018

Day 4

MAC に Free NSO を入れて Network 自動化の心の準備をしてみる

Last updated at Posted at 2018-12-03

##はじめに
最近ではネットワーク業界でも通信機器をソフトウェアから制御する流れがあります。

一方で、個人的にはあまりこの辺の技術を実際に触る機会を持てずにおりました。(言い訳)

そんな折、Cisco NSO (Network Services Orchestrator) という製品の無料評価版がリリースされました。

Cisco NSO って何ができるの?というお話はこちらに素晴らしい記事がありますので説明はお任せ致しまするとして、本稿では Free download 可能な Cisco NSO を MacOS 上にインストールしみることで、どこまでの Network 自動化の検証をすることができるかを実際に動かしてみた記録を書きたいと思います。

NSO Download

Downloadはこちらから。

なお、このCisco NSO評価版について日本語で丁寧な説明がでなされております。こちらも参考にして下さい。

ということで、Get NSO for evaluation (Mac) から MacOS版をダウンロードします。

インストールを始める前に

以下、Getting NSO に説明のある環境要件です。

Pre-Requirement.png

私の場合、勇み足で進みすぎてちゃんとドキュメント読まず、ここの要件を満たさずに進んでしまいました。案の定、インストール後色々と正しく動きません。

NSO を正しく動作させるために、JDKAnt のインストールも必要です。

インストール方法はインターネット上のエキスパートの方々の記事におまかせしますが、ご注意下さい。

いざ、インストール

まずはUnpack。

MyMAC:nso-4.7.darwin.x86_64 tkasakak$ sh nso-4.7.darwin.x86_64.signed.bin
Unpacking...
Verifying signature...
Downloading CA certificate from http://www.cisco.com/security/pki/certs/crcam2.cer ...
Successfully downloaded and verified crcam2.cer.
Downloading SubCA certificate from http://www.cisco.com/security/pki/certs/innerspace.cer ...
Successfully downloaded and verified innerspace.cer.
Successfully verified root, subca and end-entity certificate chain.
Successfully fetched a public key from tailf.cer.
Successfully verified the signature of nso-4.7.darwin.x86_64.installer.bin using tailf.cer

続いてInstall。

MyMAC:nso-4.7.darwin.x86_64 tkasakak$ sh nso-4.7.darwin.x86_64.installer.bin $HOME/ncs-4.7
INFO  Using temporary directory /var/folders/lp/w1lg3d217mqgwzkn_l_9lz700000gn/T//ncs_installer.5336 to stage NCS installation bundle
INFO  Unpacked ncs-4.7 in /Users/tkasakak/ncs-4.7
INFO  Found and unpacked corresponding DOCUMENTATION_PACKAGE
INFO  Found and unpacked corresponding EXAMPLE_PACKAGE
INFO  Generating default SSH hostkey (this may take some time)
INFO  SSH hostkey generated
INFO  Environment set-up generated in /Users/tkasakak/ncs-4.7/ncsrc
INFO  NCS installation script finished
INFO  Found and unpacked corresponding NETSIM_PACKAGE
INFO  NCS installation complete

ここまでくると NSO home directory 配下に(上記の場合 ncs-4.7 配下に)、NSOのファイルが展開されます。

MyMAC:ncs-4.7 tkasakak$ ls
CHANGES		bin		examples.ncs	man		packages	var
LICENSE		doc		include		ncsrc		scripts
README		erlang		java		ncsrc.tcsh	src
VERSION		etc		lib		netsim		support

初めて NSO をいじるにあたり、以下が参考になりました。

  • doc : 配下にGetting Started Guide や User Guide 等の情報があります。
  • examples.ncs : 配下に初学者向けのテストシナリオ等があります。

以下では、examples.ncs/getting-started/using-ncs にあるシナリオに従ってNSOに実際のルーターを登録してみたいと思います。

MyMAC:using-ncs tkasakak$ pwd
/Users/tkasakak/ncs-4.7/examples.ncs/getting-started/using-ncs
TKASAKAK-M-31YZ:using-ncs tkasakak$ ls -l
total 8
drwxr-xr-x   3 tkasakak  staff   96  6 21 16:15 0-hello-world
drwxr-xr-x  19 tkasakak  staff  608 12  1 18:11 1-simulated-cisco-ios
drwxr-xr-x  16 tkasakak  staff  512 12  1 21:54 2-real-device-cisco-ios
drwxr-xr-x   4 tkasakak  staff  128  6 21 16:15 3-real-device-juniper
drwxr-xr-x   4 tkasakak  staff  128  6 21 16:15 4-netconf-device
drwxr-xr-x   3 tkasakak  staff   96  6 21 16:15 5-snmp-alarm-northbound
drwxr-xr-x  13 tkasakak  staff  416  6 21 16:15 6-access-lists
drwxr-xr-x   9 tkasakak  staff  288  6 21 16:15 7-scripting
drwxr-xr-x   6 tkasakak  staff  192  6 21 16:15 8-ssh-keys
-rw-r--r--   1 tkasakak  staff  692  6 21 16:15 README

1-simulated-cisco-iosは同梱される仮想IOSルーター3台を起動させるシミュレーターを用いたシナリオとなりますが、以下では2-real-device-cisco-iosのREADMEにある手順に従って、実際のIOS XEルーターをNSOから管理できるようにするまでを試してみます。(2から始める場合も、0-hello-world, 1-simulated-cisco-iosにあるREADMEから読み進めるとよりわかりやすいです。)

NSO では NED (Network Element Driver) と呼ばれるドライバーによりシスコ以外の様々な機器も扱うことが可能です。

以下では評価版に同梱される CLI NED により Cisco IOS XE device の連携を目指しました。

補足:
実際のネットワーク機器でサポートされる様々な機能をNSOから扱うことができるかどうかはこのNEDで対応されているかどうかに依存します。このため、新しい機能についてはこのNEDでも対応が必要になる、ということです。

一方で、NSO では Netconf/Yang により Device 制御を行うことも可能です。この Yang model ベースの制御ではネットワーク機器側が新しい機能についても Yang model でサポートしていれば、そのモデルに基づいて機器制御が(理論上は)可能となります。

こちらの記事ではネットワークベンダーが提供する Yang model から Netconf NED を作成する手順を説明してくれております。シスコのオフィシャルサポートには制限がありますが、評価版として試して頂くには良いかと思います。ぜひ試してみて下さい。(個人的には次回への宿題とさせて下さい。)

ここまでで、その他 Getting NSO 等に説明のある PATH設定やsourceコマンド等は実施を済ませておきましょう。

NSO の起動

それでは2-real-device-cisco-iosのREADMEに従い、NSOを起動していきます。

設定ファイルを作成。NEDも指定します。

MyMAC:2-real-device-cisco-ios tkasakak$ ncs-setup --dest . --ned-package cisco-ios

NSOの起動。

MyMAC:2-real-device-cisco-ios tkasakak$ ncs

NSOが起動すると、NSOのコマンドラインに入ることができるようになります。

MyMAC:2-real-device-cisco-ios tkasakak$ ncs_cli -u admin

admin connected from 127.0.0.1 using console on MyMAC

NSOのコマンドラインは Cisco like (option: -C) と Juniper like (option: -J (*Default))がありますが、Getting Started 系の資料は Juniper like での説明になっているので、以下でも Default の設定で試してみました。

まずはNEDが正しく認識されているか確認します。

admin@ncs> show packages package package-version
           PACKAGE
NAME       VERSION
--------------------
cisco-ios  3.0.0.3

[ok][2018-12-02 00:38:03]
admin@ncs>

続いて、Configuration モードへ移行。Deviceの登録を進めます。

admin@ncs> configure
Entering configuration mode private

認証の設定。

admin@ncs% edit devices authgroups group mygroup
admin@ncs% set default-map remote-name cisco
admin@ncs% set default-map remote-password cisco
admin@ncs% top

デバイスの設定。

admin@ncs% edit devices device csr1kv
admin@ncs% set address 10.71.158.3
admin@ncs% set port 22
admin@ncs% set authgroup mygroup
admin@ncs% set device-type cli ned-id cisco-ios
admin@ncs% set state admin-state unlocked (*このコマンドで device を有効化するようですが、Guideに記載が無いので注意!!)

以下のコマンドでssh host key を対象デバイスからとってこられれば接続の基本設定は完了です。

admin@ncs% request ssh fetch-host-keys
result updated
fingerprint {
    algorithm ssh-rsa
    value e1:b8:93:b6:3a:3c:e4:31:9a:00:04:1f:ca:d7:e4:86
}
[ok][2018-12-01 20:43:45]

[edit devices device csr1kv]

変更した設定を反映させるため、commit コマンドを忘れずに。

admin@ncs% commit
Commit complete.
[ok][2018-12-01 20:39:17]

[edit devices authgroups group mygroup]
admin@ncs% top

以下のコマンドで再度接続を確認。

admin@ncs> request devices connect
connect-result {
    device csr1kv
    result true
    info (admin) Connected to csr1kv - 10.71.158.3:22
}
[ok][2018-12-02 00:45:42]
admin@ncs>

以下では機器設定をNSOへ同期します。

admin@ncs> request devices sync-from
sync-result {
    device csr1kv
    result true
}
[ok][2018-12-01 20:57:02]

以下で設定を表示できれば、NSO側への設定同期は完了です!

admin@ncs> show configuration devices device csr1kv config
ios:version 15.5;
ios:service {
(省略,設定が表示されます)

まだまだ色々といじりがいがありますが、今回はこれにて。

以下参考までに NSO からの制御を受け入れる為に入れた IOS-XE device 側の最小設定です。

csr1kv#show run
Building configuration...

Current configuration : 1297 bytes
!
! Last configuration change at 10:31:35 UTC Sat Dec 1 2018 by cisco
!
version 15.5
!
hostname csr1kv
!
enable password cisco
!
ip domain name cisco.com
!
username cisco privilege 15 password 0 cisco
!
interface GigabitEthernet1
 ip address dhcp
 negotiation auto
!
ip ssh version 2
!
line vty 0 4
 login local
!
end

*(config)# crypto key generate rsa exportable により鍵生成をしてますが、running-configには反映されないため念の為。

##参考
今回のようなことを試すにあたって、制御する対象のルーターが無いよ、という人向け。
(商用ではなく)個人使用していただけるフリーの素材としては、Cisco が提供する VIRL と呼ばれるエミュレータがあります。VIRLでは仮想ルーターを立ち上げて、VIRL 上でそれらルーター間のプロトコルの学習や簡単なテストなどに使用いただけるものとなっています。ぜひチャレンジしてみて下さい。
参考記事1
参考記事2

tkasakak@2018/12/04

12
5
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
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?