tmsh2iapp iApp generator // automate in minutes with easily generated iApps
Problem this snippet solves:
Advantages of using iApps for automation instead of plain ansible, plain REST calls, etc...
When deploying configurations as iApps the configurations are self-contained, that is: on delete all objects created by the iApp are automatically deleted and there will be no stale configurations left
iApps can be deployed with ansiblle, REST, etc... configurations just become easier to deploy because regardless the configuration size only two calls are quired: one call to import the template (if it is not already in the BIG-IP) and one to create an instance of the iApp.
tmsh2iapp allows creation of iApps that contain base configs too (ie: L1/L2/L3 network elements including non floating ones) which can be sync'ed in HA configurations seamlessly.
Main characteristics of tmsh2iapp
- Allows creating an iApp using a declarative tmsh-like syntax (these are called .t2i files)
- It has been used with LTM, ASM (limited support in v12 full support in v13+), APM, AFM and PEM modules.
- Baseline .t2i files can be created easily with the BIG-IP GUI
- Helps deploying the iApp by creating sample Ansible roles & playbooks, Heat templates and iWorkflow JSON files
- Input varialbles can be JSON lists (ie: multiple-choice/multiple-select survey variables in Ansible Tower)
- Can easily create iApps that contain base configurations (self-IPs, VLANs, etc...) that can be deployed in a BIG-IP cluster and config-sync'ed assigning per-BIG-IP values appropiately.
- It can be used in any computer with perl installed -- including the BIG-IP
- It supports passing parameters as JSON lists (useful for handling multiple-choice/multiple-select survey variables in Ansible Tower or any other YAML based automation)
- It is not BIG-IP version specific but it is being tested with BIG-IP 11.6-13.1
- Supports route-domains and partitions
- Supports LTM policies
- Options available to beautify the GUI allowing specifying field text width, validators, and single and multi-selector which lists that can be static or dynamically populated at run time.
- It allows importing (from external files or URL) the following configuration objects:
- apache-ssl-cert SSL certificates management
- asm-policy ASM policies
- browser-capabilities-db browser capabilities DB file management
- data-group External Data Group files management
- device-capabilities-db Device capabilities DB file management
- external-monitor External Monitor files management
- ifile iFile files management
- lwtunneltbl LW4o6 table files management
- ssl-cert SSL certificates management
- ssl-csr SSL Certificate Signing Request
- ssl-key SSL certificate keys management
How to use this snippet:
Visit the project's page and wiki in https://github.com/f5devcentral/f5-tmsh2iapp