24 December 2015

Written by Henry Whincup

Adaptavist Automation

Adaptavist have deployed thousands of Atlassian systems over the years and have been a part of shaping best practice around running Atlassian applications. For the last 5 years, our operations teams have focussed on automating the deployment, monitoring and management of these systems for ourselves and our clients. We code-named this initiative MaMa (standing for MaMa: Application Management Automation), and we are now ready to introduce it to the wider world.

Why Create MaMa?

Adaptavist are big believers in the power of the agile movement and the continuous... well, everything that it enables. Underpinning the success of all this is reliable repeatability through automation of tasks.

Several years ago a major client of ours asked us to assist them using Puppet to deploy the full suite of Atlassian products for a major release. This started out with just deploying Java, the Atlassian applications and a few supporting aspects (such as databases). Now it is able to automate the full lifecycle of entire virtual-machines from scratch on cloud infrastructure.

Through other open source tooling, as well as what MaMa provides, Adaptavist are now able to create and recreate entire environments within public cloud providers, like Amazon Web Services, at the push of a button with nothing more than some tracked configuration.

Our vision is to provide a robust set of tooling that enables self-service for deployments for both technical and non-technical users. The tooling we’re releasing now underpins this vision, and is the first step of sharing the infrastructure Adaptavist enjoy.

Open Sourcing

We and our customers have benefitted from the open source community through the Linux, Java, Ruby communities and it’s only right that we give back in support of the projects we have used and extended, such as Puppet, Hiera, Fog and many, many more.

So today, Adaptavist are open sourcing MaMa, which can be found on GitHub. We have chosen Version 2 of the Apache Software License to release under, as we believe in supporting business that wish to take our code and build on it, and not encumber anyone unnecessarily. But obviously, we’d like you to share the extensions you’ve built with the world too!

What Problems Does MaMa Solve?

Adaptavist believe in loosely coupled tooling which integrate clearly in an opinionated way about the process, but allowing any of the technology to be replaced by better alternatives as they come along. The tool set Adaptavist is open sourcing today includes:

avst-Puppet

Adaptavist’s Puppet support project which tries to make things as data driven through Hiera configuration as possible, wrapping other modules to make them useable from Hiera where they are not out of the box. Avst-puppet comes as a set of Puppet modules and a data driven template structure.

  • Configuration of the OS and OS-packaged applications

  • Configures supporting elements such as web-servers, databases, ldap etc.

  • Configures and runs avst-app

  • Support encrypted secrets and facts, so credentials can be stored securely within configurations

This includes:

  • Puppet runner - A wrapper runner for puppet that allows for encrypted secrets

  • Hiera Fragment - Merges yaml files for use with secrets

  • Hiera Loader - Simplifies looking up values from hiera with programmatic defaults

avst-wizard

  • Completes the setup wizard based on configuration files

  • Supports JIRA Server, Confluence Server, Bitbucket Server, FishEye/Crucible, Bamboo Server and Crowd

  • Automates user directory, database and Atlassian application base url configuration

avst-app

  • Written in Bash (with native OS packaging)

  • Configures and manages non-natively packaged applications

    • e.g. Atlassian applications, Artifactory/Nexus, Coverity

Adaptavist’s Opinionated Process

Technology only automates a process, but what that process is, in many ways, is more important.

Adaptavist have 5 principles which underpin MaMa:

  • Loosely coupled elements following the Single Responsibility Principle

  • The separation of configuration and code

  • Everything, including configuration, should be version controlled, composable and repeatable

  • Linux support first

  • Cloud first, with Vagrant support

What’s Next?

We’re still investing in MaMa, and there’s more tools in our kit that will be open sourced over time. Notable tools are:

avst-cloud

  • Drives public cloud infrastructure in a vendor independent way

  • Ruby, based around fog.io

  • Takes hiera configuration describing infrastructure

  • Bootstraps the OS until Puppet can take over

avst-backup

  • Abstracts various backup technologies to provide a consistent interface for avst-app

  • Ruby, highly modular

  • Currently knows how to backup and restore: databases, LDAP and file-systems

Getting Started

Right now, the MaMa has been released as a set of tools, where each of the components are usable in their own right. The coming avst-cloud component will enable the use of the other MaMa components in a more cohesive manner.

For now, the tools are ready for use and we’re investing in making the documentation around how to use the tools as part of a platform ready for public consumption. For now, please visit us at Adaptavist Labs and on GitHub, to follow our progress.

Watch this space!



blog comments powered by Disqus