Thanks to the devs and the community

Just wanted to say thanks to all of the Ansible developers and the community of users, and to share my success story with Ansible.

I stumbled upon Ansible a couple of months ago, and it was the perfect solution for a particular problem space that we had. In the past, I’ve tried the various open source CM tools and never found the one that matched my style of working. Each has its own strengths and weaknesses, but Ansible seems to work the way that I want it to pretty much right out of the box.

Over the last couple of months, I needed to expand from a single pair of Solaris systems running a clustered application, to having 6 different clustered instances of that same application on RHEL instead of Solaris, each with its own slightly different configuration (from a single PROD instance with a cloned TEST, to 3 different environments each with their own PROD and TEST clustered pairs). Also, the new instances of the application didn’t necessarily have the same requirements, since one environment only needs to be active/passive, another needed to be active/active with an additional Terracotta shared memory cluster, another needed to be active/active without Terracotta, etc…

In the past, I simply had scripts to manage the app on each Solaris server, with the conf directory of the application in a subversion repository and a clone of one of the Solaris zones as a test system. I would test out a configuration change on the clone, and if it worked I would check it into svn and check it out on the 2 production nodes.

When this new project came to pass, I started down the route of standing up the new systems using my old method, but that was obviously not going to work. I looked at puppet and chef (briefly, since I knew they really wouldn’t have suited the situation), and decided to test out Ansible. I had the first TEST instance running on a pair of RHEL VMs within a day or two, and a more fully fleshed out setup for the first TEST/PROD environment within a week.

Ansible also forced me to do a particular task in the “right” way by packaging up the common parts of the application into a RPM package and setting it to install with the yum module, instead of trying to keep the files for each version in sync on every play. I even have group_vars for each environment so that I can control which version of the RPM is installed, so I can test upgrading to new versions and roll back to the old versions if needed just by changing a variable.

We put the first of the new environments into PRODUCTION status this week and it was a great success. It is also very easy to migrate configurations from TEST to PROD for each environment. The next step is to migrate the current PROD environment over to RHEL, and I am confident that this process will go much more smoothly, since I have the first “Ansible managed” environment as a guide.

The “no client” approach of Ansible worked best for me, since we are all adept at using scripts over SSH to manage our systems. I feel confident that I could hand over this project to another analyst today and they would hit the ground running and stand up the other 2 environments with minimal problems.

Hi Mark!

Glad to hear things are working out well and thanks for sharing!

–Michael