iApp Jing Lin 2012 2 March. Version Author Date 1.0 Jing Lin 2012/3/2 1.1 Jing Lin 2012/3/9 WHAT IS IAPP An iApp is a user-customizable framework for deploying applications. It consists of three components: Templates, Application Services, and Analytics. An iApp Template is where the application is described and the objects (required and optional) are defined through presentation and implementation language. An iApp Application Service is the deployment process of an iApp Template which bundles all of the configuration options for a particular application together.You would have an iApp Application Service for SharePoint, for example. iApp Analytics include performance metrics on a per-application and location basis. BENEFITS OF USING IAPP User-customizable Easy editing of configurations and cleanup Reentrancy Configuration encapsulation Cradle-to-grave configuration management Strictness protects against accidental changes to the configuration Operational tasks and health status for App objects displayed on App- specific component view (see right) Copy/Import/Export capability Community support for DevCentral hosted templates CREATE APP SERVICE APP SERVICE Objects will associate an app-service So if an object have app-service definition, means it is created by an iapp ltm profile http /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_http_profile { app-service /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7 defaults-from /Common/http redirect-rewrite none } APP SERVICE Default, we can’t edit those objects which created by iapp directly, system will refuse the operation. --Uncheck strick updates under app service properties. Normally, we should use reconfigure function of app service to modify app-service. IAPP TEMPLATE Include 3 parts Implementation --tmsh script -All inputs and setting in the presentation will be performed to create an iapp service Presentation –APL,tmsh script, tcl -Display a GUI to users, it is a user interface Help --HTML -Online help on left of GUI Stored in bigip_script.conf HOW TO CREATE A TEMPLATE From GUI add new template, not recommend Tmsh create sys application template ** Edit in your favorite tools, then copy paste Edit it in bigip_script.conf , not recommend IAPP TEMPLATE STRUCTURE create template my_iapp { } ~ actions replace-all-with { definition { html-help { <!-- insert html help text --> } implementation { # insert tmsh script } presentation { # insert apl script } } } APL http://devcentral.f5.com/wiki/iApp.APL.ashx http://devcentral.f5.com/wiki/iApp.APL_commands.ashx APL Value elements: -string -choice -multichoice -editchoice -password Layout elements: Section Row table Functional elements Include Define Optional Message text Validators FQDN IpOrFqdn IpAddress NonNegativeNumber Number PortNumber APL- CREATE A SECTION A section is a BLOCK where you can put all relevant input\choice\text\message…. in it. This help you organize the style of the page. Section title-text text Message STRING String <keyname> [default] [display] [required] [validator] String ipaddr required validator “ipaddress” String port default “80” display “small” validator “portnumber” CHOICE choice yesorno default "no" {"yes","no"} choice tcpprofile {"profile1","profile2"} choice lbmethod {"Round Robin"=> "round-robin", "Least Connections" => "least-connections"} This will create a single selection menu. The string after => means the value that when you select the item before the =>. If no =>, it means the value equal the items which displayed on page MESSAGE Provide extra text message on the page, We can use it to show some explanation or other warning info or anything what you want to say. Message keyname [words you want] EDITCHOICE Editchoice <keyname> [default “value2”] {“value1”,”value2”} editchoice myeditchoice default "value1" {"value1","Display as value2" => "value2key"} MULTICHOICE Multichoice <keyname> [display small/large…] [default values] <available values> multichoice ports default {"80", "443"} {"22", "23", "80", "443"} PASSWORD Password [display “small/large…”] [required] If set requried, then a valid value must be entered Password pwd required SECTION Create a layout, usually is to group elements together. Section example1 { …. } Section example2 { …. } Setcion can not be nested TABLE Elements in table will be treated as columns, and form a row. There will be “add” button and delete button, which you can repeat rows or delete rows. Table can not be nested. ROW Similar to table, but only one line and can not repeat the row. INCLUDE Used to involve an exist iapp APL script, so we can define some common script in a fie, then include it and use the definitions in any iapps include "/Common/f5.apl_common" section example11 { yesno use_ssl } text { example11 "SSL Parameters" example11.use_ssl "Offload SSL? " } DEFINE Define some common objects that can be used by any iapps, in conjunction with “include” command OPTIONAL Show or hide element depend on another element value. Don’t use it inside“table” Show text per browser language IMPLEMENTATION Who really create those objects that we input in presentation? Tmsh script in implementation part in charge of this. What is tmsh script? Script that can run in tm shell So iapp is let you answer question in GUI then system run tmsh script automatically to finish a task. TMSH SCRIPT BASIS proc script::init {} { } proc script::run {} { } proc script::help {} { } proc script::tabc {} { } HTTPS://DEVCENTRAL.F5.COM/WIKI/TMSH .COMMANDS.ASHX HELP This part is for online-help. It is html-based. Contains the text that appears in the help frame when you select a template during the application-services creation process.You can modify text in this section to help those who use the templates to create application services. This field supports the following HTML tags: b, blockquote, br, code, dd, dl, dt, em, h1, h2, h3, h4, h5, h6, i, li, ol, p, pre, small, strike, strong, sub, sup, u, and ul. TIPS /var/tmp/scriptd.out When you create app service by iapp template, the tmsh script running result will be in the file. Process scriptd is parsing engine of iapp on GUI. If the process stop running, you will get below error when creating iapp service. Error parsing template:01020005:3: The requested operation is not implemented yet. Tmsh on CLI does not affected if scriptd is not running WHERE IS IAPP STORED /config/*/bigip_script.conf Include Custom tmsh script Custom iapp template Application service UNDERSTAND TMSH SCRIPT Tmsh create cli script yourscritpname Tmsh modify cli script yourscriptname Tmsh run cli script yourscriptname Editor is like vi root@ltm6900-1(Active)(/Common)(tmos)# run cli script my_script VS IN BIGIP.CONF ltm virtual /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_http { app-service /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7 destination /Common/7.7.7.7:http ip-protocol tcp mask 255.255.255.255 persist { /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_cookie_persistence_profile { default yes } } pool /Common/t-common profiles { /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_caching_profile { } /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_http_profile { } /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_lan-optimized_tcp_profile { } /Common/vs_iapp_http_7.7.7.7.app/vs_iapp_http_7.7.7.7_oneconnect { } } vlans-disabled } With default setting, we can not edit those objects like vs , pool, profile… only can reconfigure it in IApp. Uncheck strict updates can get rid of the restriction. http://devcentral.f5.com/wiki/iApp.HomePage.ashx#iControl_for_iApps _2 Tmsh script http://devcentral.f5.com/wiki/tmsh.HomePage.ashx APL-application presentation language http://devcentral.f5.com/wiki/iApp.APL.ashx Tips and techniques http://devcentral.f5.com/wiki/iApp.iApp-Template-Development-Tips-andTechniques.ashx BZID373402 C1072662 Thanks