Technology-Watch - Infrastructure as Code
Infrastructure as Code (IaC) is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) in a descriptive model, using the same versioning as DevOps team uses for source code.
One of my key principles is automate everything. Infrastructure as Code allows the developers to fully define the environments that are required for a given system, and automate the creation, and modification of those environments. The same code is used across all environments from development, all the way through to production. Using IaC the source files are treated in exactly the same way as all other source code files, they are added into a version control system, and maintained over time.
Teams who implement IaC can deliver environments rapidly and at scale. Teams avoid manual configuration of environments and enforce consistency by representing the desired state of their environments via code. Infrastructure deployments with IaC are repeatable and prevent runtime issues caused by configuration issues or missing dependencies. DevOps teams can work together with a single set of practices and tools to deliver applications and their supporting infrastructure rapidly, reliably, and at scale.
IaC has a wide array of tooling, from vendor specific tools, to technology agnostic ones. Some of the most popular products are described below:
- AWS Cloudformation - AWS specific set of tools to automate everything within Amazon Web Services.
- Google Cloud Deployment Manager - Google specific set of tooling.
- Azure Resource Manager - Azure specific set of tools.
- Terraform - My current favourite of the day, works cross platform and supports AWS, Azure, etc.
- Chef - Uses the ingredients, and cookbooks analogy to delivering IaC.
- Ansible - One of the most flexible IaC tools on the market
- Puppet - Used by some of the biggest names in the industry.
Choosing the best IaC tool is a matter of finding one that suits your wider technology choices, personal preference and your specific needs best, and most importantly what makes your team most productive.
To find out how I can help your team perform better, feel free to contact me, pick up the phone or drop me an email.