Treat Your Infrastructure as Code
Infrastructure as Code (IaC) is a valuable concept and practice embraced by DevOps, but it is fairly abstract for many IT operators and technology executives. It requires the leveraging of agile infrastructure (IaaS) that can be orchestrated using RESTful APIs, like cloud.ca and AWS. IaC is often mistakenly considered part of configuration management provided by tools like Chef, Ansible, Puppet and SaltStack. Configuration management tools provide some infrastructure provisioning capabilities, but they are better at configuring the OS and up. Practical experience with an IaC tool like Terraform will increase value of configuration management tools for your team by creating IaC, execution plans, and change automation.
What is Infrastructure as Code?
IaC is creating and using software that manages configuration and automated provisioning of infrastructure services. It applies software development best practices to infrastructure configuration. Terraform is software by Hashicorp that simplifies the adoption and management of IaC for building, changing, and versioning infrastructure safely and efficiently.
Why is Infrastructure as Code valuable?
Less mistakes and less effort: The benefits resulting from automation are easy to understand when we think of the time it takes to do things manually and the errors that are often introduced as a result. Keep in mind that the way the automation is done is important. Aim to make the automation software composable so it is easy to reuse in many different combinations.
Less miscommunication: IaC brings the most value when used throughout dev, test/staging and production environments. IaC reduces the chance of miscommunication between internal teams when IaC is implemented using software development best practices.
Less risk: Configuration drift introduces risk in infrastructure operations. IaC can create your most authoritative source of documentation regarding how to deploy the infrastructure and can also serve as the reference for the current state of the infrastructure. Using a tool like Terraform makes it easier to train people and simplify documentation based on its inputs. Adopting IaC minimizes risks that arise from manual changes and reducing errors in documentation.
What type of organization benefits the most from IaC?
Organizations that have to frequently re-configure and/or deploy infrastructure see the greatest benefit from IaC. Software companies, SaaS, e-commerce, and managed service providers have been early adopters of IaC for several reasons: IT being part of a profit centre rewards the focus on efficiency, less or no legacy to deal with, and mature software development practices. “Enlightened enterprise” IT teams that encourage innovation and efficiency are starting to adopt it as well.
Where to begin?
I recommend pairing a developer with an IT operator to collaborate on creating a deployment of a simple multi-tier web application using Terraform. Their experience will typically generate ideas on how IaC can be applied within your organization. Clément Contini at CloudOps recently wrote a technical blog post that walks you through how to get started with Terraform on cloud.ca.
Sign up for a free trial of cloud.ca here.
image credit: https://medium.com/
About the Author