DEV Community

Cover image for Deploying Your First Server with Terraform: A Beginner's Guide
Patrick Odhiambo
Patrick Odhiambo

Posted on

Deploying Your First Server with Terraform: A Beginner's Guide

Infrastructure as Code (IaC) is revolutionizing the way we manage and provision cloud resources. Among the various tools available, Terraform stands out for its simplicity, flexibility, and wide adoption across cloud platforms. If you're new to Terraform, deploying your first server might seem daunting, but it doesn't have to be. In this guide, we'll walk you through the process step-by-step, ensuring you get up and running with confidence.

Step 1: Create Your Terraform Configuration File

Let's start by creating a new directory for our Terraform project. Inside this directory, create a file named main.tf. This will be the main configuration file where we'll define our server.

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-0e86e20dae9224db8" #Ubuntu 20.04 LTS
  instance_type = "t2.micro"

  tags = {
    Name = "MyFirstTerraformServer"
  }
}
Enter fullscreen mode Exit fullscreen mode

Here's what this code does:

  • provider "aws": Specifies that we're using AWS as our cloud provider and sets the region to us-west-2.
  • resource "aws_instance" "example": Defines an EC2 instance resource. We're using an Amazon Machine Image (AMI) and setting the instance type to t2.micro, which is a low-cost option suitable for testing.

Step 2: Initialize Terraform

Before we can deploy our server, we need to initialize Terraform in our project directory. This will download the necessary provider plugins (in this case, AWS).

Open your terminal, navigate to your project directory, and run:

terraform init
Enter fullscreen mode Exit fullscreen mode

You should see output indicating that Terraform has successfully initialized your project.

Step 3: Preview and Apply the Changes

Now that our configuration is ready and Terraform is initialized, it's time to preview what Terraform is going to do. We can do this using the terraform plan command.

terraform plan
Enter fullscreen mode Exit fullscreen mode

Terraform will show you a detailed plan of what resources it will create, modify, or destroy. Since this is your first deployment, you should see a plan to create one EC2 instance.

Once you're satisfied with the plan, it's time to apply the changes and deploy your server:

terraform apply
Enter fullscreen mode Exit fullscreen mode

Terraform will ask for confirmation. Type yes and hit Enter. Terraform will then proceed to create the resources defined in your main.tf file. After a few moments, your EC2 instance will be up and running!

Step 4: Managing and Scaling Your Infrastructure

One of Terraform's strengths is its ability to manage infrastructure changes over time. For example, if you want to change the instance type or add more resources, you simply update the main.tf file and run terraform apply again. Terraform will automatically calculate the changes needed and update your infrastructure accordingly.

Want to scale up? Add more instances? Simply modify your configuration and let Terraform handle the rest. This approach ensures that your infrastructure remains consistent, even as it grows and evolves.

Step 5: Cleaning Up

When you're done experimenting, it's good practice to clean up the resources you've created to avoid unnecessary charges. Terraform makes this easy with the destroy command:

terraform destroy
Enter fullscreen mode Exit fullscreen mode

Terraform will show you a plan of what will be destroyed. After confirming, it will delete the resources and return your environment to its original state.

Architecture Diagram

architecture diagram

Conclusion

Congratulations! You've just deployed your first server using Terraform. While this guide covers the basics, Terraform is a powerful tool with many advanced features, including modules, state management, and integration with CI/CD pipelines.

As you continue to explore Terraform, you'll find that it simplifies complex infrastructure management tasks, allowing you to focus more on developing and less on provisioning. Whether you're deploying a single server or managing hundreds of resources across multiple cloud providers, Terraform has you covered.

Happy Terraforming!

Top comments (0)