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 https://192.168.0.3/mgmt/tm/cli/script -d '{"command":"run","name":"bgp_configuration","utilCmdArgs":"1.11.1.1 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:
12.1