Lab 4: Configuring Device using NSO CLI Mode

Lab 4: Configuring Device using NSO CLI Mode

Task 1: Use NSO CLI to Configure simple IOS cmd:

This Before beginning this lab on your workstation, install a standard set of development applications, tools, and interfaces.

Introduction

In this task we are going to:

View the data of a device in XML, JSON and XPATH.

Save the data to a file.

Configure a device using CLI commands.

Rollback the change.

Step 1: Login into NSO CLI mode to view device configuration

Type following commands on UNIX terminal:

rst@rst-nso:~$ cd nso-5.3/packages/neds/nso-instance/
rst@rst-nso:~/nso-5.3/packages/neds/nso-instance$ source $HOME/nso-5.3/ncsrc
rst@rst-nso:~/nso-5.3/packages/neds/nso-instance$ ncs_cli -C -u admin

NSO stores a snapshot of each device configuration, which is updated after each sync-from.

You can view the configuration of a device using the following command

(outside config mode in the NCS CLI)

Step 2: Show running config using NSO CLI:

Type following command in NSO CLI mode:

admin@ncs# show running-config devices device RSTXR-1 config
devices device RSTXR-1
    config
    admin
    username test
    group root-system
    secret 5 $1$9.2E$ZfCsCgp9Rvc9flNvGN1Yc/
    exit
    exit-admin-config
    !
    hostname RSTXR-1
    service timestamps debug datetime msec
    service timestamps log datetime msec
    domain lookup disable
    domain name rstforum.net
    netconf agent tty
    exit
    netconf-yang agent
    ssh
    exit
    telnet vrf default ipv4 server max-servers 10
    username cisco secret 5 $1$erBJ$6XP1BjhA4qXUvV186rlzO1
    exit
    line console
    exec-timeout 0 0
    absolute-timeout 0
    session-timeout 0
    exit
    line default
    exec-timeout 0 0
    absolute-timeout 0
    session-timeout 0
    exit
    line template vty
    timestamp
    exec-timeout 720 0
    exit
    vty-pool default 0 50
    control-plane
    management-plane
    inband
        interface all
        allow all
        exit
    ssh server session-limit 10
    ssh server v2
    ssh server vrf default
    interface MgmtEth 0/0/CPU0/0
    ipv4 address 10.0.0.1 255.255.255.0
    no shutdown
    exit
    interface GigabitEthernet 0/0/0/0
    shutdown       

Step 3:Type following commands in NSO CLI mode to view interface configuration:

admin@ncs# show running-config devices device RSTXR-1 config interface
devices device RSTXR-1
 config
  interface MgmtEth 0/0/CPU0/0
   ipv4 address 10.0.0.1 255.255.255.0
   no shutdown
  exit
  interface GigabitEthernet 0/0/0/0
   shutdown
  exit
  interface GigabitEthernet 0/0/0/1
   shutdown
  exit
  interface GigabitEthernet 0/0/0/2
   shutdown
  exit
  interface GigabitEthernet 0/0/0/3
   shutdown
  exit
!

We can view the same information in multiple formats, such as XML, CLI, and others.

Step 4: Type following commands in NSO CLI mode to view interface configuration in XML Format:

admin@ncs# show running-config devices device RSTXR-1 config interface | display xml

<config xmlns="http://tail-f.com/ns/config/1.0">
    <devices xmlns="http://tail-f.com/ns/ncs">
    <device>
    <name>RSTXR-1</name>
        <config>
        <interface xmlns="http://tail-f.com/ned/cisco-ios-xr">
        <MgmtEth>
            <id>0/0/CPU0/0</id>
            <ipv4>
            <address>
                <ip>10.0.0.1</ip>
                <mask>255.255.255.0</mask>
            </address>
            </ipv4>
        </MgmtEth>
        <GigabitEthernet>
            <id>0/0/0/0</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/1</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/2</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/3</id>
            <shutdown/>
        </GigabitEthernet>
        </interface>
        </config>
    </device>
    </devices>
</config>    

Let us now view the same information in JSON formats

Step 5: Type following commands in NSO CLI mode to view interface configuration in json

admin@ncs# show running-config devices device RSTXR-1 config interface | display json

{
    "data": {
    "tailf-ncs:devices": {
        "device": [
        {
            "name": "RSTXR-1",
            "config": {
            "tailf-ned-cisco-ios-xr:interface": {
                "MgmtEth": [
                {
                    "id": "0/0/CPU0/0",
                    "ipv4": {
                    "address": {
                        "ip": "10.0.0.1",
                        "mask": "255.255.255.0"
                    }
                    }
                }
                ],
                "GigabitEthernet": [
                {
                    "id": "0/0/0/0",
                    "shutdown": [null]
                },
                {
                    "id": "0/0/0/1",
                    "shutdown": [null]
                },
                {
                    "id": "0/0/0/2",
                    "shutdown": [null]
                },
                {
                    "id": "0/0/0/3",
                    "shutdown": [null]
                },

Let us view the same information with its xpath:

Step 6:Type following commands in NSO CLI mode to view interface configuration with xpath

admin@ncs# show running-config devices device RSTXR-1 config interface | display xpath
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/MgmtEth[id='0/0/CPU0/0']/ipv4/address/ip 10.0.0.1
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/MgmtEth[id='0/0/CPU0/0']/ipv4/address/mask 255.255.255.0
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/GigabitEthernet[id='0/0/0/0']/shutdown
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/GigabitEthernet[id='0/0/0/1']/shutdown
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/GigabitEthernet[id='0/0/0/2']/shutdown
/devices/device[name='RSTXR-1']/config/cisco-ios-xr:interface/GigabitEthernet[id='0/0/0/3']/shutdown   

Using the NSO CLI for displaying the running-config of existing CLI devices in a structured way is very useful. Now let us save the output to a file for later reference.

Step 7:Type the following commands in NSO CLI mode to Save output to a file:

show running-config devices device RSTXR-1 config interface | display xml | save rstxr1.xml

The file is then saved to the location where you started your NSO CLI. From that working directory, see the rstxr1.xml file in the following Home directory: /home/rst/nso-5.3/package/neds/nso-instance$

rst@rst-nso:~/nso-5.3/packages/neds/nso-instance$ ls rstxr1.xml
rstxr1.xml
rst@rst-nso:~/nso-5.3/packages/neds/nso-instance$

A simple way to view the output of the file is to use the cat rstxr1.xml bash command:

rst@rst-nso:~/nso-5.3/packages/neds/nso-instance$ cat rstxr1.xml

<config xmlns="http://tail-f.com/ns/config/1.0">
    <devices xmlns="http://tail-f.com/ns/ncs">
    <device>
    <name>RSTXR-1</name>
        <config>
        <interface xmlns="http://tail-f.com/ned/cisco-ios-xr">
        <MgmtEth>
            <id>0/0/CPU0/0</id>
            <ipv4>
            <address>
                <ip>10.0.0.1</ip>
                <mask>255.255.255.0</mask>
            </address>
            </ipv4>
        </MgmtEth>
        <GigabitEthernet>
            <id>0/0/0/0</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/1</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/2</id>
            <shutdown/>
        </GigabitEthernet>
        <GigabitEthernet>
            <id>0/0/0/3</id>
            <shutdown/>
        </interface>
        </config>
    </device>
    </devices>
</config>....    

NSO allows us to configure IOS devices using the CLI in an IOS style. You can use ? to navigate and typeconfiguration commands to devices.

Step 8: Configure IOS devices using the NSO CLI mode:

Note: We have to issue a namespace prefix before configuring the top of a configuration hierarchy. Log into NSO from the Linux Bash terminal, and enter config mode if not already. Make sure your devices are state admin-state unlocked, if for some reason you locked them before. Pick a device and enter into that device tree like below and check out the config options for that device and then configure an interface description.

ncs_cli -C -u admin 
conf 
devices device RSTXR-1 
config 

Note: We enter the config mode twice: Once to enter the NSO configure mode, and a second time after you have navigated to a device to enter that particular device’s configuration mode.

For example, to configure ip address on an interface, add the namespace prefix for the NED and see the options:

admin@ncs(config-config)# interface ?
Possible completions:
  ATM               ATM Network Interface(s)
  BVI               Bridge-Group Virtual Interface
  Bundle-Ether      Aggregated Ethernet interface(s)
  Bundle-POS        Aggregated POS interface(s)
  CEM               Circuit Emulation interface(s)
  CSI               Cross SDR interface(s) | short name is csi
  FastEthernet      FastEthernet/IEEE 802.3 interface(s)
  FiftyGigE         FiftyGigEthernet
  FortyGigE         FortyGigEthernet
  FourHundredGigE   FourHundredGigEthernet
  GCC0              OTN GCC0 interface(s) | short name is G0
  GigabitEthernet   GigabitEthernet/IEEE 802.3 interface(s)
  HundredGigE       HundredGigEthernet
  Loopback          Loopback interface
  MgmtEth           Ethernet/IEEE 802.3 interface(s)
  Multilink         Multilink network interface(s)
  Null              Null interface | short name is Nu
  POS               Packet over SONET/SDH network interface(s)
  PTP               FastEthernet/IEEE 802.3 interface(s) | short name is PTP
  PW-Ether          Pseudo-Wire Ethernet interface(s)
  Port-channel      Ethernet Channel of interfaces
  SRP               SRP interface(s)
  Serial            Serial network interface(s)
  TenGigE           TenGigabitEthernet/IEEE 802.3 interface(s)
  TwentyFiveGigE    TwentyFiveGigabitEthernet/IEEE 802.3 interface(s) |
                    short name is Tw
  TwoHundredGigE    TwoHundredGigEthernet
  Vlan              Iosxr Vlans
  nve               Network Virtualization Endpoint Interface(s)
  preconfigure      Specify a preconfig
  tunnel-ip         GRE/IPinIP Tunnel Interface(s)
  tunnel-ipsec      IPSec Tunnel interface(s)
  tunnel-mte        MPLS Traffic Engineering P2MP Tunnel interface(s)
  tunnel-te         MPLS Traffic Engineering Tunnel interface(s)
  tunnel-tp         MPLS Transport Protocol Tunnel interface

After exploring the options, make the following change,

admin@ncs(config-config)# interface GigabitEthernet 0/0/0/3
admin@ncs(config-if)# ipv4 address 222.222.222.222 /24
admin@ncs(config-if)# no shutdown
admin@ncs(config-if)# exit
    

Now we will take a look and see what commands NSO will send, outformating the change into native which is standard Cisco CLI syntax.

Step 9: Commit dry run:

admin@ncs(config-config)# commit dry-run outformat native
native {
    device {
        name RSTXR-1
        data interface GigabitEthernet 0/0/0/3
              ipv4 address 222.222.222.222/24
              no shutdown
             exit
    }
}

To configure the device (sending the commands to the device), you can then send:

commit

note: We can rollback the commit. This process is usually easiest to see in the NSO GUI.