Dynamic Routing Configuration via iControl REST (IMISH configuration via cli script)

Problem this snippet solves:

If you want to configure IMISH via iControl, this can be done via cli script.

How to use this snippet:

First, you need to enable the desired routing protocol via iControl REST. This can be accomplished by modifying the /mgmt/tm/net/route-domain/~Common~yourroutedomain object natively. Once enabled, you cannot speak directly to IMISH (as of 13.0 HF2), but you can create a cli script and pass variables to it, then write that to a temporary file and have IMISH suck it in.

You can call this script and pass arguments via iControl REST.


Example call:

curl -sk -H 'content-type: application/json' -u myuser:mypass -d '{"command":"run","name":"bgp_configuration","utilCmdArgs":" 65117"}'  

Code :

cli script bgp_configuration {  
proc script::init {} {  
proc script::run {} {  
    set neighboraddr [lindex $tmsh::argv 1]  
    set asnumber [lindex $tmsh::argv 2]  
    set imishscript [open "/var/tmp/imish_script.tmp" "w"]  
    puts $imishscript "enable"  
    puts $imishscript "configure terminal"  
    puts $imishscript "router bgp $asnumber"  
    puts $imishscript "neighbor $neighboraddr remote-as $asnumber"  
    puts $imishscript "neighbor $neighboraddr activate"  
    puts $imishscript "neighbor $neighboraddr soft-reconfiguration inbound"  
    puts $imishscript "neighbor $neighboraddr timers 10 30"  
    puts $imishscript "neighbor $neighboraddr timers connect 10"  
    puts $imishscript "end"  
    puts $imishscript "write mem"  
    close $imishscript  
    exec imish -f /var/tmp/imish_script.tmp  
proc script::help {} {  
proc script::tabc {} {  
    total-signing-status not-all-signed  

Tested this on version:

Published Aug 13, 2019
Version 1.0

Was this article helpful?

No CommentsBe the first to comment