ZeroTurnaround Blog

Product Updates, Company News & Fun

LiveRebel 2.6 Sneak Peek: Environment Configuration Management

Parameterization – Curse or Blessing? It Depends On Your Tooling ;)

When parameterization first came to be, its impact was awesome. Software, which was custom built for each machine could now be configured to work in a number of different situations. However, this led to a new problem – who is responsible to ensure that parameters are correct for a particular situation? How would they do it? Sometimes, depending on the complexity of the software, getting those parameters right is an art in itself.

Fast forward to the present day – nowadays, a significant amount of software is run on some server and the parameters are called configuration; yet the age-old problem has resurfaced. Now what we look to maximize is ensuring that a specific piece of software is configured with correct values across your development, QA and production environments. Even across different customer environments, as well. How do we manage these interactions and dependencies?

Enter LiveRebel

Over the past year, as we have intently listened to customer feedback about LiveRebel 2.0 and 2.5, we heard a recurring theme – it would be über-useful if LiveRebel could help operations teams to externalize the environment-specific configuration from application packages and provide means to manage it.

We listened and we acted – starting with LiveRebel 2.6, launching on 13th of March (grab a preview-release on download page), we have included several features to help our users with configuration management.

Cool! So how do I use it?

First you need to externalize environment-specific configuration from your application archive – replacing real values with $LR{...} placeholders (note: file with the placeholders is stored separately in a special “liverebel” directory, but those details are a topic for a later post).

Then, whenever you deploy or update, LiveRebel will recognize those placeholders and replace them with environment-specific values. The fact that the values in the configuration file have been provided by LiveRebel is totally transparent to the application and requires no changes in code.

Sample configuration with placeholders in a Java application:

Sample configuration with placeholders in a PHP application:

Second, you need to define those environment-specific values in LiveRebel Command Center and associate them with specific server or server group. This may sound more complicated that it really is – we have made this process really easy – you can push entire properties files to Command Center and be done with it, no need to define those pesky key-value pairs one-by-one.

Sample properties file with environment-specific values, in Command Center:

Finally, you deploy the application with LiveRebel and the correct environment-specific values are automagically swapped in.

While this makes it really easy to perform the initial deployment, this is really just the tip of the iceberg for any successful software project. After deployment comes maintenance, and we have taken a few extra steps to make configuration maintenance a lot easier. Read on!

Deploying your application

Do you recall a time when you released a new version of your app to production, but forgot one new configuration parameter that caused everything to blow up, leading to angry users calling in to complain? In LiveRebel 2.6, we added a check for this exact situation, so we’ve got you covered. Sounds too good to be true? Here is how we do it.

As LiveRebel knows all the parameters that the application needs (defined with $LR{...} placeholders) and it also knows all parameters currently available for particular environment, it will perform a before-the-deploy check to verify that all the required values are actually present. No more failed updates due to incomplete configuration files!

Screenshot of deploy-time errors

Updating the configuration

If you happen to manage more than one application, you most probably have come across this situation: you make a configuration change in the environment and then need to figure out which applications are using that changed value, meaning you have to update their configuration.

Surprise! LiveRebel can do that for you as well. As soon as you have pushed in new configuration values, LiveRebel will perform a comparison between currently active configuration and new configuration and figure out, which applications need to be updated to effect the change. And it doesn’t stop there – depending on the technologies involved, it can also restart the applications (yes, I’m looking at you, Java application servers).

Screenshot of environment configuration reload dialog

Great! How can I try it?

If you need a tool for configuration management, LiveRebel is the only one that you can feel awesome using; give it a try by getting yours on our download page (be sure to choose 2.6+). Play around with a sample application that makes use of all new 2.6 features on GitHub: PHP (Yii) and Java (SpringMVC).

The sample application makes use of a relational database, so grab our easy-to-set-up demo environment on Github (uses Vagrant and VirtualBox).

Try it out and let us know, what you think!