Part 3.1: How to Move from Manual Changes to Semi-Automation
Building infrastructure manually (with CLI or GUI tools) results in infrastructure that is hard to audit, hard to reproduce, hard to scale, and hard to share knowledge about.
If your current provisioning practices are largely manual, your first goal is to begin using Terraform Community edition in a small, manageable subset of your infrastructure. Once you’ve gotten some small success using Terraform, you’ll have reached the semi-automated stage of provisioning maturity, and can begin to scale up and expand your Terraform usage.
Allow one individual (or a small group) in your engineering team to get familiar with Terraform by following these steps:
Write your first Terraform Configuration file.
Choose a small real-life project and implement it with Terraform. Look at your organization’s list of upcoming projects, and designate one to be a Terraform proof-of-concept. Alternately, you can choose some existing infrastructure to re-implement with Terraform.
The key is to choose a project with limited scope and clear boundaries, such as provisioning infrastructure for a new application on AWS. This helps keep your team from getting overwhelmed with features and possibilities. You can also look at some example AWS projects to get a feel for your options. (The AWS two-tier example is often a good start.)
Your goal here is to build a small but reliable core of expertise with Terraform, and demonstrate its benefits to others in the organization.
At this point, you’ve reached a semi-automated stage of provisioning practices — one or more people in the organization can write Terraform code to provision and modify resources, and a small but meaningful subset of your infrastructure is being managed as code. This is a good time to provide a small demo to the rest of team to show how easy it is to write and provision infrastructure with Terraform.
Next, it's time to transition to a more complete infrastructure as code workflow. Continue on to Part 3.2: How to Move from Semi-Automation to Infrastructure as Code.