Application developers have led the charge for IT workflow automation, creating and adopting continuous integration (CI), continuous delivery (CD), and orchestration tools to increase speed and consistency in their processes. These same concepts (and in some cases, these same tools) can be applied to IT infrastructure, especially in today’s highly elastic cloud environments. The ultimate goal is to achieve a world where all changes to infrastructure are tracked and revertible — also known as Infrastructure as Code (IaC).
Automating infrastructure has a number of advantages. It facilitates easy scale up/scale down. And because the infrastructure is described in metadata, you can version and test it just like application code. It also makes it easy to stand up “clones” of the entire infrastructure for tasks such as root cause analysis or launch modeling.
Common tools for infrastructure automation include the usual suspects: Chef, Puppet, Ansible, SaltStack, Git, and Jenkins. Depending on your environment, other cloud-specific or integrated development environment (IDE) tools may also be involved. Knowing where and when to apply which tool, and how to integrate them effectively, is key to success.