Maximize Investment with HashiCorp Terraform

Yonathan Koren
Yonathan Koren

image of laptop on desk with code

 HashiCorp Terraform is an Infrastructure-as-Code tool that has a rich ecosystem of Providers – compiled binaries used by Terraform which can capture resources expressed in the HCL configuration language and provision those said resources across multiple Public Cloud Providers, and even other systems such as Kubernetes or services such as PagerDuty

An organization can be successful with HashiCorp Terraform if the Infrastructure as Code expressed by Terraform becomes the source of truth for the organization’s infrastructure and the use of the tool is widespread while still following the organization’s proper change management procedures. 

There are three considerations that will allow use of Terraform to scale within your organization, while following proper change management procedures: 

  1. Modularity and Self-Service 
  2. Version Control Systems and Change Management Procedures 
  3. Separating Infrastructure as Code from Configuration Management 

 In this brief, we will go into each of these considerations at a high level. 

 1. Modularity and Self-Service 

 Terraform configurations can be made modular such that organizations can reuse configurations housing similar components across multiple projects. Terraform modules can be implemented and documented in such a way that they have clear consumer contracts, enabling individuals to make use of the modules without needing to know exactly how they are implemented. This prevents a scenario where all infrastructure management is funneled through one dedicated individual in an organization and hence bottlenecked. 

 In some organizations, a dedicated engineering team is the only set of actors modifying the organization’s infrastructure. In other organizations, software development teams are responsible for provisioning and modifying the infrastructure for their product. In either case, modules and consistent Terraform patterns allow the use of Terraform to scale throughout the organization. 

 Some larger organizations can even leverage self-service with Terraform, which involves infrastructure-oriented authors developing modules that will be consumed by development teams. This can be further leveraged with Terraform Enterprise and its ServiceNow integration

 The following are some assessment criteria for the potential uses of modularity and self-service within your organization: 

  1. Determine how Application Teams will be on-boarded.
    Assuming application teams are made up of software developers and not operators: 
    1. Define best practices for this. 
    2. Do application teams write the Terraform code, or merely consume/execute the modules written by dedicated operators? 
    3. Determine where governance is required and determine how it will be enforced. 

  2. Determine your current level of self-service and identify where improvements can be made 
    1. Define consistent workflows that can be automated 
    2. How is the current day separation between development and operations defined? 
    3. What type of procedural handovers exists between these teams? 

  3. Consider how Terraform will be used at scale and plan accordingly. 
    1. How will Terraform code be decomposed into smaller chunks (modules)? 
    2. Which infrastructure component/constructs should be defined as distinct/reusable modules? 

Get the Whole Walkthrough

Sign up with your email for occasional updates on DevOps related content and receive the entire PDF on Maximizing your Investment in HashiCorp Terraform. By signing up you receive the entire PDF including:

  • Version Control Systems and Change Management Procedures
  • Separating Infrastructure as Code from Configuration Management

Are You Ready for a DevOps Transformation?

While software continues to eat the world at an ever-increasing pace with DevOps, the challenges and struggles of companies implementing DevOps is very real. We all can overcome these challenges by working together, improving our tools, processes, knowledge and training our workforce.

Learn More

Indellient is a Software Development Company that specializes in Data AnalyticsCloud Development ApplicationDevOps Services, and Document Process Automation.

About The Author

Yonathan Koren

Hi, I’m Yonathan Koren. As a DevOps Specialist at Indellient, I help organizations along their DevOps journeys. In the past, I used to be an operator, and one of the themes that deeply resonates with me is the struggle developers and operators experience when they feel that they are working against each other. My goal is to help organizations achieve their business goals by adopting workflows that promote productivity, autonomy, and collaboration. I am a certified HashiCorp practitioner, working closely with the HashiCorp suite. I have also given talks alongside Chef and HashiCorp regarding the importance of consistent, composable packaging of organizations’ applications using Chef Habitat, which allows them to deploy to VMs, bare metal, Nomad, or Kubernetes using a single artifact.