Management Packs vRealize Orchestrator

Building Custom vRO Workflows for F5 BIG-IP

In July 2016, Blue Medora released the vRealize Orchestrator Plug-in for F5 BIG-IP. It came with 58 out-of-the-box workflows, which ranged from simple provisioning tasks, like creating pool members, to more complicated features, like creating an HA pair. While these workflows cover the most common use cases of F5 BIG-IP, they only scratch the surface of the plugin.

Many users are not aware of this, but the F5 BIG-IP plugin actually exposes the entire IControl REST API. And because of this, you can do everything imaginable within the constraints of the F5 BIG-IP environment–not just what’s provided to you.

To demonstrate this, I’ll walk you through the creation of a custom workflow that sets the pool of a virtual server.
First, begin by opening the API explorer in vRealize Orchestrator and then navigate to F5 Networks. When you expand this branch, you’ll probably be overwhelmed by the number of objects contained beneath it. There are over 1800 scripting objects here, each correlating to a URL in the REST API. And for each of these objects, there are numerous methods available for creating the actions of a workflow.

ltmvirtualscripting1

Figure 1: The LtmVirtual scripting object in the API Explorer.

For this example, the scripting object that we’re most concerned with is “LtmVirtual.” This object is the plugin’s javascript representation of a virtual server. While its name may seem confusing at first, it’s actually derived from the generic URL of virtual servers in the IControl REST API. Therefore, if at any point you have trouble locating the appropriate scripting object when creating your custom workflows, you can always reference the IControl Rest documentation and concatenate the associated URL.

restapidocf52

Figure 2: The REST API documentation for F5 BIG-IP virtual servers.

As for our intended example, let’s look a little more closely at the “LtmVirtual” scripting object. In the API explorer, you’ll notice that this object has a method for setting a pool and that this method will only require the pool name as a parameter. Therefore, as long as we have an instance of a virtual server, as well as the name of our pool, we can easily create a workflow that utilizes this logic.
We’ll start by creating an action that will accept an “LtmVirtual” scripting object as an input parameter. This will allow the end user to select the virtual server they wish to alter when running a workflow. Next, we’ll create an additional input parameter for the pool name. And then finally, we’ll use these two parameters to write an extremely simple script, utilizing the “setPool” method we discovered in the API explorer.

scriptf53

Figure 3: A script demonstrating how to set the pool of a virtual server.

After creating this action, there’s very little work required in creating the actual workflow. You just have to drop the action into the workflow and connect the appropriate parameters.

customworkflowf54

Figure 4: Our custom workflow that sets the pool for a virtual server.

As you can tell, the development of a custom F5 BIG-IP workflow is a simple three step process: You consult the API Explorer. You create an action. And finally, you add that action to a workflow.

This is exactly the approach that was taken when developing the 58 standard workflows that come with the vRealize Orchestrator Plug-in for F5 BIG-IP. And essentially, this is the biggest strength of the plugin. The very tools that were used to make this plugin can be used by you to make something better, stranger, or even more elaborate than anything ever intended. The tools are there. It’s up to you on how you use them.