Managing multiple configurations on Cisco IOS

In the journey to CCIE there are a great number of labs that we can be doing, such as INE, Narbik, CCIECert, Cisco 360 etc. So chances are our switches and routers are going to be reloaded a number of times with varying configurations. Thankfully we can make the process a little easier and store multiple configurations on the equipment and change between these at our leisure.

The IOS supports a number of commands that can help us with this, so let’s have a look at how we can manage the respective configs for a number of different labs.

The first command is mkdir, we can make a directory on the flash storage with the command

mkdir flash:/myConfigs

and confirm that it has been created using the command

dir flash:

The output should look like this:

Router#dir flash
Directory of flash:/

1 -rw- 20570916 Jun 6 2000 19:19:48 +00:00 c1841-spservices9-mz.124.16b.bin
2 drw- 0 Jul 23 2013 11:11:42 +00:00 myConfigs

So now we have a nice place-holder for our respective configs and we can begin filling this with our configuration files.

So let’s make some very basic configurations. I am using an 1841 router, it’s got a serial interface that will connect to the BB1 router (the frame-relay backbone).

I assign a description to the Serial 0/0/0 interface:

Interface Serial0/0/0 
 description Link to BB1 - INE

Like I said its a basic configuration! And now let’s copy this to the myConfigs folder, and check that it’s there:

Router#copy run flash:/myConfigs/INE.txt
Destination filename [/myconfigs/INE.txt]?

694 bytes copied in 0.744 secs (933 bytes/sec)
Router#dir flash:/myconfigs
Directory of flash:/myConfigs/

12 -rw- 694 Jul 23 2013 11:20:28 +00:00 INE.txt

On the second line just hit enter to accept the offered destination filename.

So we now have one configuration. Let’s make another one:

Router#conf t
Router(config)#int Serial 0/0/0
Router(config-if)#desc Link to BB1 - 360
Router(config-if)#exit
Router(config)#exit
Router#copy run flash:/myConfigs/360.txt
Destination filename [/myconfigs/360.txt]?

694 bytes copied in 1.268 secs (547 bytes/sec)
Router#dir flash:/myconfigs
Directory of flash:/myConfigs/

12 -rw- 694 Jul 23 2013 11:20:28 +00:00 INE.txt
13 -rw- 694 Jul 23 2013 11:24:16 +00:00 360.txt

So now we have two configurations – but how can we easily switch between them?

One option is to copy the file name back to the startup config and reload the router

Router#copy flash:/myConfigs/INE.txt startup-config

But this means your router is down for a few minutes. Another way is to use the configure replace command.

At the moment our router is running the “360” configuration. We can see this by doing “sh run | beg Serial0/0/0” and we can see the following:

Router#sh run | beg Serial0/0/0 
interface Serial0/0/0           
description Link to BB1 - 360   
no ip address                   
!

To make our router run the INE configuration we can use the command configure replace and specify the file we are going to substitute as the current running config:

Router#configure replace flash:/myConfigs/INE.txt    
This will apply all necessary additions and deletions    
to replace the current running configuration with the      
contents of the specified configuration file, which is      
assumed to be a complete configuration, not a partial       
configuration. Enter Y if you are sure you want to proceed. ? [no]: Y   
Total number of passes: 1        
Rollback Done                  

Router#                                                                  
*Jul 23 11:33:32.947: Rollback:Acquired Configuration lock.                
Router#                                                                 
*Jul 23 11:33:34.035: %PARSER-3-CONFIGNOTLOCKED: Unlock requested by process '3'. Configuration not locked.                                                        
Router#sh run | beg Serial0/0/0                                            
interface Serial0/0/0                                                        
description Link to BB1 - INE                                          
no ip address                                                              
!

So now we can easily and quickly switch between multiple configurations!

We can also push multiple configurations onto the flash file system through TFTP, or another method such as SCP. Here I am using SCP, firstly I copy a configuration to the SCP client hosted on a laptop, then I edited the file and saved it under the name CCIECert.txt, and then copied it back to the router. Lastly, I did a configure replace to set it as the current running config:

Router#copy flash:/myConfigs/INE.txt scp:
Address or name of remote host []? 10.250.1.10
Destination username [Router]?
Destination filename [INE.txt]?
Writing INE.txt
Password:
!
694 bytes copied in 12.968 secs (54 bytes/sec)

Router#copy scp: flash:/myConfigs/CCIECert.txt
Address or name of remote host []? 10.250.1.10
Source username [Router]?
Source filename []? CCIECert.txt
Destination filename [/myConfigs/CCIECert.txt]?

Password:
!
699 bytes copied in 11.392 secs (61 bytes/sec)

Router#dir flash:/myConfigs
Directory of flash:/myConfigs/

   12  -rw-         694  Jul 23 2013 11:20:28 +00:00  INE.txt
   13  -rw-         694  Jul 23 2013 11:24:16 +00:00  360.txt
   14  -rw-         699  Jul 23 2013 12:25:12 +00:00  CCIECert.txt

Router#configure replace flash:/myConfigs/CCIECert.txt
This will apply all necessary additions and deletions
to replace the current running configuration with the
contents of the specified configuration file, which is
assumed to be a complete configuration, not a partial
configuration. Enter Y if you are sure you want to proceed. ? [no]: y
Total number of passes: 1
Rollback Done

Router#
*Jul 23 12:26:41.679: Rollback:Acquired Configuration lock.
*Jul 23 12:26:43.331: %PARSER-3-CONFIGNOTLOCKED: Unlock requested by process '3'. Configuration not locked.
Router#
Router#
*Jul 23 12:26:44.791: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
*Jul 23 12:26:45.791: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down
Router#sh run | beg Serial0/0/0
interface Serial0/0/0
 description Link to BB1 - CCIECert
 no ip address
!

So there we have it. It is easy to host multiple configurations and switch between them quickly. just remember to save your work as you go!