Stay up to date on the latest news from Rubicon Red. News, articles, customer success and press releases.

Part 1: Model-driven provisioning of Fusion Middleware

September 30, 2014

Fusion Middleware provisioning has come a long way. With the release of SOA Suite 12c, developers can get a working environment up in minutes. What about a highly available, high performing, secure, and scalable platform?

Lets face it, provisioning production ready Fusion Middleware environments is not a walk in the park. And really it’s no surprise, its Middleware! It’s right in the middle of your systems and users, packed with a myriad of settings for you to tailor to bring value to your organization.

The Oracle Enterprise Deployment Guides for Fusion Middleware products take you through a step-by-step approach for building so-called production environments. It’s got all the kind of details you’d expect to see… but it is a "guide" not a gospel.

In reality, the EDG is the foundation, it’s the concrete slabs. With the EDG by your side, you will be building on solid, supported and proven infrastructure; ready for the onslaught of changes!

Configuration Management

"We’ve confirmed last year’s performance findings: high-performing organizations are still deploying code 30 times more frequently, with 50 percent fewer failures than their lower-performing counterparts." - State of DevOps Report 2014

Tools like Puppet and Chef (among the many other players like Ansible, Salt etc.) solve a very real problem. System configuration is hard to manage especially at scale.

Before these tools hit the market, configuration in the enterprise would often drift from a desired state and there was no easy way to detect or remediate this leading to inconsistent and unreliable platforms.

Let’s take a deeper look at one of these tools... Puppet.

What is the secret?

Puppet provides a domain-specific language (DSL) that can be used to define desired state of systems. It is vastly different from shell scripting. It is a fully declarative language that is designed specifically for configuring operating systems. It allows administrators to test desired changes safely, roll them out on demand and enforce them so that unintended deviations are detected and rectified. With model-driven configuration management solutions like Puppet, system administrators need to focus only on what they want not how.

Take this example below.

file { "/etc/important-setting.conf":
  content => "throttle-limit [300]",
  mode    => "644",
  owner   => "oracle",
  group   => "oinstall"

In this case, Puppet is being used to tune a throttle limit setting. This definition will ensure that the limit is always equal to 300 regardless of the initial state.

1. Initial State2. Puppet Apply3. End State
Setting doesn’t exist at all.Add the settingThe file containing throttling limit is se to 300. it is owned by oracle:oinstall with 644 permissions
Setting is differentUpdate the setting
File permissions are wrong on the fileFix the file permissions and update file contents if required
The file is not owned by the correct userFix the file owner and update file contents if required
The settings has already been updatedNo change

The ability to deliver the same result regardless of the initial state is known as idempotency. If you apply a configuration and it makes the change once, on re-run, it will simply ensure the change is still there (rather than fail on create because it is already there!). With tools like Puppet this enforcement or drift correction runs on a schedule. If you were using shell scripts to make changes, you would still need to manually code the idempotency in. With Puppet (and crew - Chef, Ansible etc), good automation principles are built into the language so the desired state is visible and works consistently allowing you to focus on innovation around your core business.

Operating System Configuration vs Fusion Middleware Configuration

Tools like Puppet and Chef, have extremely powerful out-of-the-box types such as file, package, user, group and exec. They apply operating system configuration well and it comes as no surprise these tools are being rapidly extended by the community to support complex applications such as the Fusion Middleware product families.

But how does it all work?

The out-of-the-box Oracle supported automation tools are mature but pre-date the new wave of Configuration Management toolsets to the enterprise. Oracle Fusion Middleware automation is all about WLST, silent installation and CLI execution. But in their raw form:

  • WLST is not natively declarative or idempotent
  • Neither is Silent installation, OPatch, BSU and RCU

What is concerning is the trend around wrapping shell or WLST scripts in Puppet with the exec type with no intention to support idempotency and good automation principles. As organizations scale their platform with new settings, they require an administrator to map Puppet resources to WLST code. They are building idempotency in through a number of exec calls and processing the CLI outputs which is not a small effort. This is time consuming and requires specific coding knowledge well beyond the concepts of Puppet and Chef.

A declarative model for Fusion Middleware

In the next post we will look at some real world approaches for Model-Driven provisioning of Fusion Middleware that are used by SOA, OSB, BPM, WebCenter, IDM & Siebel customers world-wide to drive consistency, repeatability and reliability.