Infrastructure as Code Tools
A previous article introduced Infrastructure as Code (IAC) and how it aims to bring servers, networks, load balancers, and other infrastructure components into the automated workflows and continuous deployment DevOps model. You can read that article here. To incorporate infrastructure into development and operations workflows requires tools designed for that purpose. What are the features that you should be looking for in such tools, and what tools are available to deliver those features?
What Features Should IAC Tools Have
Tools that are designed to configure and manage IAC workflows should support a few core features. The first is that they should be controllable via a scripting language. Preferably they should support a standard scripting language that allows system administrators and developers to use the skills they learn across multiple tools and applications. Having scripts in a single language that can integrate functions from many different tools and applications is vital for efficient IAC and DevOps workflows. Increasingly the scripting tool of choice is Microsoft PowerShell.
In addition to being scriptable, the virtual infrastructure items and applications being controlled must be able to operate in unattended mode. Nothing related to infrastructure use should require human intervention to proceed. Similarly, any scripts written should allow unattended operation, and they should have error catching code that attempts to continue execution to the required outcome, or if they can’t fail they should gracefully and alert the system admins.
Scripts are code. It is vital that any tools being used to script IAC workflows support the external storage of the code. This ensures that the scripts can be version controlled in the same industry standard Version Control Systems (VCS) as application code.
IAC tools should allow the use of text based files to define the configuration of a virtual infrastructure component. Generically these files are known as configuration definition files. Most tools will have a specific name for them like templates, playbooks, manifests, or something similar. They should be text files, probably in XML or JSON format, that can be externalized and stored in the CVS system and version controlled just like application code and workflow scripts. Using CVS allows for virtual infrastructure configurations to be standardized, maintained, and rolled back if a change is discovered to be faulty.
KEMP LoadMaster has the features needed to include it in IAC and DevOps workflows. It has a RESTful API, a Java Wrapper for the RESTful API, and a PowerShell interface with Cmdlets for provisioning, deploying and managing virtual LoadMaster instances. There is also a LoadMaster LBaaS driver for use with OpenStack, a Docker containerized version, and a deployment module for use with VMware vRealize Operations suite. Any one of these should allow the incorporation of LoadMaster into IAC workflows.
Popular IAC Tools
The market for IAC tools is dynamic with new tools frequently appearing and others abandoned. Some tools that have been around for a while, are actively developed and should still be available if you read this post six months after the publication date. What tools you use will be dependent on what tools and workflows you have in place for DevOps now. The best approach is to use and extend tools already in use or add compatible tools that can use the same scripting language as outlined.
From an infrastructure definition tool perspective AWS CloudFormation, Azure Resource Manager (with PowerShell automation), Hasicorp Terraform, OpenStack Heat, and Chef Provisioning are well established and trusted solutions. In addition to its other DevOps features, Puppet Enterprise also has support for IAC provisioning. Evaluating these tools would be a good place to start when looking to select an IAC management solution.
IAC is a fundamental component of a fully automated DevOps workflow. Getting to a place where your virtual infrastructure components can be developed, deployed, managed, upgraded, and decommissioned just like software components and applications is the end goal state for IAC. Selecting tools that allow scripting and version control as outlined in this article will help you get there. KEMP LoadMaster can be used within these IAC setups to provide the application delivery controller and load balancing functionality you need for development, test, and production deployments.