Forum Discussion
create irule with variable in iApp
Hi Devcentral!
I've a questions:
I'm modifying an iApp in order to create an irule to assign to the vs.
the assignment is here { [iapp_conf create ltm virtual ${app}_vs \ destination [iapp_destination $::pool__addr $::pool__port] \ mask $mask \ $vs_params \ ip-protocol tcp \ mirror $mirror_action \ profiles replace-all-with { $tcp_profiles http } \ rules { iwf_test_irulebal iwf_$irulelog }] }
the irules are very simple
the first irule is with no variables
tmsh::create ltm rule iwf_$irulelog {
when HTTP_REQUEST {
log local0. "No variables"
}
}
the second irule need to balance on the pool created with the iapp, so i need to write it with variable statement and not with string
tmsh::create ltm rule iwf_test_irulebal {
when HTTP_REQUEST {
if { [HTTP::uri] starts_with "/portal${app}_pool" } {
use pool ${app}_pool }
else {
TCP::close
}
}
}
i've tried with \before the { but seems not works. also with ::global variable but not works.
In a classic BIG-IP environment without iapp the use of variable in irule works. how can i use the variable in an irule created with an iapp?
thanks in advance
- crodriguezRet. Employee
iApps are fussy with brackets, braces, and quotes, and need a lot of escape characters, especially when creating an iRule. As a result, I like to set a variable to the iRule code string (with all the escape characters) and then refer to the variable on the tmsh::create command, rather than try to do it all on one command. Makes maintenance a bit easier, too:
set MyRule " when HTTP_REQUEST \{ if \{ \[HTTP::uri\] starts_with \"/portal${app}_pool\" \} \{ pool ${app}_pool \} else \{ TCP::close \} \}" tmsh::create "/ltm rule ${app}_MyRule $MyRule"
Notice the braces in ${app} are not escaped so that the iApp processor will perform variable substitution when the application service is deployed. But all the braces, brackets, and quotes that need to be present in the finished iRule must be escaped.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com