Cisco
NSO

Cisco NSO を Ubuntu にインストールするまで( Vagrant を使って)

何がやりたい?

自分のMacにNSOをインストールする勇気もなく、色々試して……訳が分からんようになって……丸ごと削除して……を繰り返すことが多いだろうということで、色々なページを参考にしたきた結果をここに記録することにします。(皆様ありがとうございます)

まず、Ubuntu用のディレクトリとしてnsoを作成して、ホスト側(自分のPC)と共有するためのworkspaceも作成する

Vagrantの準備

mkdir nso
cd nso
mkdir workspace

vagrant の初期ファイルを準備する(コマンドを実行すると自動的に作成される)

vagrant init ubuntu/xenial64
上記のコマンドの実行結果
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

vim で設定ファイルを開いて、編集するのは2箇所

vim Vagrantfile

1.下記の設定を追加する

workspaceを共有させる
  # config.vm.synced_folder "../data", "/vagrant_data"
  config.vm.synced_folder "./workspace", "/home/vagrant/workspace"

2.(option) 下記行のコメントを外す(NSO Web UI にアクセスする時など)

ホストマシンからpingが届くようにするためにNATを止める
  # config.vm.network "public_network"
  config.vm.network "public_network"

Vagrantの起動

vagrant up
上記のコマンドの実行結果
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/xenial64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/xenial64' is up to date...
==> default: Setting the name of the VM: nso_default_1519181217630_10436
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 5.0.40
    default: VirtualBox Version: 5.1
==> default: Mounting shared folders...
    default: /vagrant => /Users/hogehoge/vagrant/nso
    default: /home/vagrant/workspace => /Users/hogehoge/vagrant/nso/workspace

ログイン

vagrant ssh

Ubuntuの環境構築

まずは、必要そうなツールをインストール(You can add whatever you like...)

sudo apt-get update
sudo apt-get install -y make build-essential
sudo apt-get install -y python-minimal python2.7 python2.7-dev
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python get-pip.py

下記が入っていないと、netconf-console コマンドを実行した際にエラーが出る

sudo pip install paramiko
sudo apt-get -y install libxml2-utils

Java が入っていないと、NSO の packages reload を実行した際にエラーが出る

sudo apt-get -y install default-jre

NSOのインストール

下記のファイルがworkspace配下にあると想定する

出力例
vagrant@ubuntu-xenial:~$ cd workspace/
vagrant@ubuntu-xenial:~/workspace$ ls
nso-4.5.3.linux.x86_64.signed.bin

下記のコマンドで展開する

chmod +x nso-4.5.3.linux.x86_64.signed.bin
./nso-4.5.3.linux.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.5.3.linux.x86_64.installer.bin using tailf.cer

インストーラーを実行する

sh ./nso-4.5.3.linux.x86_64.installer.bin $HOME/ncs-4.5.3 --local-install
上記のコマンドの実行結果
INFO  Using temporary directory /tmp/ncs_installer.12754 to stage NCS installation bundle
INFO  Unpacked ncs-4.5.3 in /home/vagrant/ncs-4.5.3
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 /home/vagrant/ncs-4.5.3/ncsrc
INFO  NCS installation script finished
INFO  Found and unpacked corresponding NETSIM_PACKAGE
INFO  NCS installation complete

環境設定

ディレクトリを移動する

cd ~/ncs-4.5.3/

NSOの環境変数を設定する(ためのシェルスクリプトを実行)

source $HOME/ncs-4.5.3/ncsrc

これを毎回、実行するのが手間になるため、下記も実行しておくと便利

echo 'source $HOME/ncs-4.5.3/ncsrc' >> ~/.bashrc

NSO が動作するために必要となる作業スペースを作成する

ncs-setup --dest $HOME/ncs-run

NED の元パッケージを作業スペース配下にコピーする(cp -r でも良い)

ln -sF $HOME/ncs-4.5.3/packages/neds/cisco-ios $HOME/ncs-run/packages/
ln -sF $HOME/ncs-4.5.3/packages/neds/cisco-iosxr $HOME/ncs-run/packages/
ln -sF $HOME/ncs-4.5.3/packages/neds/cisco-nx $HOME/ncs-run/packages/

NSOの起動

cd ~/ncs-run/
ncs

コマンドラインでログインする(Juniperスタイルなら、-J)

ncs_cli -u admin -C

NED のパッケージを確認する

show packages

もし、下記のような表示であれば、パッケージの再読み込みも試してみる

NEDが認識されていない
admin@ncs# show packages 
% No entries found.

パッケージの再読み込み

packages reload
上記のコマンドの実行結果
admin@ncs# packages reload 

>>> System upgrade is starting.
>>> Sessions in configure mode must exit to operational mode.
>>> No configuration changes can be performed until upgrade has completed.
>>> System upgrade has completed successfully.
reload-result {
    package cisco-ios
    result true
}
reload-result {
    package cisco-iosxr
    result true
}
reload-result {
    package cisco-nx
    result true
}
admin@ncs# 

再度、NED のパッケージを確認する

show packages | include file
上記のコマンドの実行結果
admin@ncs# show packages | include file
 build-info file cisco-ios-source-3.0.0.3.tar.gz
 build-info file cisco-iosxr-source-3.0.3.tar.gz
 build-info file cisco-nx-source-3.0.0.1.tar.gz

コマンドラインを終了する

exit

NSOの停止

ncs --stop

Vagrantの停止

vagrant halt