Sling Academy
Home/DevOps/How to use Terraform templates

How to use Terraform templates

Last updated: February 04, 2024

Overview

Terraform, an open-source infrastructure as code software tool created by HashiCorp, allows users to define and provision data center infrastructure using a high-level configuration language. In this tutorial, we will dive into how to use Terraform templates to manage infrastructure easily and efficiently.

Understanding Terraform Templates

Terraform templates, known as Terraform configurations, are written in HashiCorp Configuration Language (HCL). These configurations describe the set of resources needed, their relationships, and configuration details. A Terraform configuration can be a single file or a set of files that together describe the resources you want to manage.

Prerequisites

  1. Basic understanding of cloud infrastructure concepts.
  2. Terraform installed on your machine. Visit Terraform’s official site to download and install Terraform.

Steps-by-Steps Instructions

Step 1: Setting Up Your First Terraform Template

Start by creating a directory for your Terraform project. Inside this directory, create a file named main.tf. This will be your main Terraform configuration file. Here’s a simple example that specifies an AWS S3 bucket:

provider "aws" {
  version = "~> 2.0"
  region  = "us-east-1"
}

resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-terraform-bucket"
  acl    = "private"
}

This code block defines an AWS provider and an S3 bucket resource named my_bucket. The bucket argument specifies the bucket’s name, and acl controls who can access the bucket.

Step 2: Initializing Terraform

Before you can apply your configuration, you need to initialize your Terraform project. Initialization downloads the necessary plugins and prepares your project for deployment. Run the following command in your Terraform project directory:

terraform init

This command prepares your project for further actions such as plan and apply.

Step 3: Planning Your Infrastructure

Terraform allows you to preview changes without applying them. This step is crucial for verifying your configuration before making any changes to your actual infrastructure. Run:

terraform plan

This will display a detailed plan of the resources that Terraform intends to create, modify, or destroy.

Step 4: Applying Your Configuration

Once you’re satisfied with the plan, you can apply your configuration. This step will prompt Terraform to create the resources defined in your template. Execute:

terraform apply

A prompt will appear asking for confirmation. Type yes to proceed. After a few moments, Terraform will report the changes it made.

Modularization and Reusability

As your infrastructure grows, managing everything in a single configuration file becomes impractical. Terraform allows you to modularize your configurations. Create modules for reusable pieces of your infrastructure, like networks or compute instances, and reference them in your main configuration. Here’s an example of defining a module:

module "vpc" {
  source     = "./modules/vpc"
  cidr_block = "10.0.0.0/16"
}

This configuration includes a VPC module from the local ./modules/vpc directory. The cidr_block argument passes the desired CIDR block to the module.

Best Practices

  • Version Control: Store your Terraform configurations in a version control system. This practice helps in tracking changes, collaboration, and rollback if needed.
  • Secret Management: Never hardcode sensitive information in your configurations. Use Terraform’s variable feature to externalize sensitive data.
  • Continuous Integration: Integrate Terraform with your CI/CD pipeline for automated testing and deployment.

Conclusion

Terraform templating is a powerful tool for infrastructure automation and management. By following this guide, you’re now equipped with the knowledge to create, modularize, and deploy infrastructure configurations significantly more efficiently. Continue exploring Terraform’s extensive documentation and community resources to further enhance your infrastructure as code skills.

Next Article: How to use Terragrunt to manage Terraform config

Previous Article: Terraform: How to prevent accidental deletion of resources

Series: Terraform Tutorials

DevOps

You May Also Like

  • How to reset Ubuntu to factory settings (4 approaches)
  • Making GET requests with cURL: A practical guide (with examples)
  • Git: What is .DS_Store and should you ignore it?
  • NGINX underscores_in_headers: Explained with examples
  • How to use Jenkins CI with private GitHub repositories
  • Terraform: Understanding State and State Files (with Examples)
  • SHA1, SHA256, and SHA512 in Terraform: A Practical Guide
  • CSRF Protection in Jenkins: An In-depth Guide (with examples)
  • Terraform: How to Merge 2 Maps
  • Terraform: How to extract filename/extension from a path
  • JSON encoding/decoding in Terraform: Explained with examples
  • Sorting Lists in Terraform: A Practical Guide
  • Terraform: How to trigger a Lambda function on resource creation
  • Understanding terraform_remote_state data source: Explained with examples
  • Jenkins Authorization: A Practical Guide (with examples)
  • Solving Jenkins Pipeline NotSerializableException: groovy.json.internal.LazyMap
  • Understanding Artifacts in Jenkins: A Practical Guide (with examples)
  • Using Jenkins with AWS EC2 and S3: A Practical Guide
  • Terraform: 3 Ways to Remove Duplicates from a List