NSO Lab 4: Configuring Device using NSO CLI Mode
Configuring Device using NSO CLI Mode
In Lab 4: Configuring Device using NSO CLI Mode, participants typically delve into the process of configuring network devices within the Cisco Network Services Orchestrator (NSO) environment using the Command Line Interface (CLI) mode. This lab involves tasks such as accessing the NSO CLI, defining device configurations, and utilizing NSO CLI commands to push configuration changes to the network devices. Participants may explore features like transaction management to ensure consistency and rollback options in case of errors. The lab aims to provide hands-on experience in leveraging NSO's CLI mode for efficient and automated device configuration, showcasing the power of NSO in orchestrating network elements. Successful completion of Lab 4 equips participants with practical skills in configuring devices through the NSO CLI, an essential aspect of network automation and orchestration.
Lab:
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.