Benefits of Automated Oracle FMW Provisioning

Oracle Fusion Middleware provisiong is always a critical prerequisite which will substantially influence the success or failure of our development projects. Those of us who have spent many years working with this toolset in its many versions, should know for sure what a distressful experience it is to work with sloppily or incorrectly provisioned environments.

Provisioning can also consume a lot of our precious time, whether it is performed locally or in controlled environments belonging to our organization / customer. As the components have evolved, setup options have also become increasingly complex and diverse (although maybe friendlier from a UI perspective), and even though we may have mastered this craft and are capable of producing a nice and shiny configuration, replicating this consistently and for multiple environments where we can expect high variance regarding product versions, particular requirements, limitations and criticality levels, is without any doubt a very challenging and potentially error-prone endeavor. Add dependencies, intangibles and deadlines to the mix and this can become as complicated as any other project task.

Nevertheless, for the time being and with all the tools at our disposal, this provisioning processes can be easily streamlined and automated, so we can stop the suffering while also learning some really exciting stuff and providing value to our organization / customer.

Automated provisioning: what are we looking for?

This “value” we’ve mentioned may represent lots of things when talking about an optimized provisioning cycle, for example:

So, which options do we have?

There are so many, but let’s talk about some of them and provide some examples and references. For instance, we will always have the good old config wizard:

Which may be fine in some cases, but depends on a lot of things in order to run smoothly: user permissions, O.S. parameters, JRE/JDK, environment variables, RCU, network performance, etc. Also, we may not always have graphic capabilities available, so at a loss for other options, its possible we may be stuck with the dreaded console mode, good luck with that!

But there are in fact other options, most notably WLST, which has been around for a long time but can now be easily leveraged by combining its product-specific potential with the flow control capabilities of several provisioners the likes of: Puppet, Ansible, Chef, etc.

So a puppet script for example could take care of the following activities in automated fashion:

Specific properties and configuration details can usually be stored in “properties” files (using hiera for example), in order to maximize the potential for reuse and to eliminate hardcoding from our scripts.

Most of these activities could also be run in parallel for multiple nodes (computers) in some scenarios, so depending on topology, processor speed and possibly network, we could be able to have a ready-made, fully operational, pre-patched & certified environment in 20 to 25 minutes.

You could even go further and pair your working scripts with sophisticated virtualization / container technologies such as Vagrant, Docker, etc., so even the creation and management of boxes can be part of the streamlined process. Vagrant for example can work wonders for spinning up sandbox, development or testing environments, where its management capabilities will let us perform activities such as: private network creation, port forwarding, shared storage provisioning and more with only basic knowledge of these technologies.

Here’s what a Vagrantfile looks like:

A lightweight virtualization manager like Vagrant, will let you choose between a set of virtualization providers and/or provisioners, or even create your own custom plugins if you are up to it.

Another very positive thing about all of this, is that you can benefit from the constant contribution of the community. There are tons of ready made scripts, base boxes, container images, playbooks, etc… out there, as well as tutorials, blogs, documentation and very valuable resources, even official ones from Oracle itself.

So why not go look at some examples and try them out?; my recommendation is to do it, so here are some useful links to the fantastic work of some of my good friends and fellow Oracle ACEs (including my Sysco teammate Jorge) who have done some really groundbreaking work in this regard:

Jorge Quilcate

Edwin Biemond

Lucas Jellema

Andreas Koop

I certainly hope you found this post interesting, thanks for reading!!