Create a Custom Terraform Module

30 minutes
  • 2 Learning Objectives

About this Hands-on Lab

Hey there, Gurus! Welcome to the lab! This lab will demonstrate how to create a custom module, and then call that module with a root module in your main configuration. This will allow you to share a piece of configuration with multiple infrastructure projects. We will first set up our child module, which will configure an EC2 instance. We will then add a module block that will call our child module in our main configuration. So let’s get started creating a custom module!

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a Custom Module
  1. In the terminal, once logged in to your instance, change to the Use_Modules directory.
  2. In the Use_Modules directory, edit the modules/ec2/main.tf file and add in your ami and subnet_id from the resource_ids.txt file.
  3. In the Use_Modules directory, edit the ec2.tf file and add the following:
    module "ec2-module" {
      source = "./modules/ec2/"
    }
  4. Examine the outputs.tf configuration files in both the Use_Modules and Use_Modules/modules/ec2/ directories.
  5. Initialize your working directory.
  6. Deploy your resources.
Confirm Your EC2 Instance Has Been Created
  1. Check your outputs to confirm your instance was deployed.
  2. Check the lab-provided AWS console or use the AWS CLI to confirm your EC2 instance was created.

Additional Resources

You are an admin who supports one of the largest online comic book retailers in the world. You are one of a handful of admins who have been assigned to use Terraform to manage the company's cloud deployments. You are asked to create a new dev environment to test out new features of the company's site. You have a basic configuration, and you want to make your configuration as DRY as possible. You decide to use modules so you can easily use the same resource configurations between the dev environment and, hopefully, the future staging and prod servers. I mean, why create the same configuration multiple times, am I right?! Create the module using the lab instructions, add a module block that calls the child module to the lab configuration, and deploy your infrastructure to complete this lab. Let’s get started!

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?