Deploying a VM in AWS Using the Terraform Workflow

30 minutes
  • 4 Learning Objectives

About this Hands-on Lab

In this hands-on lab, we will be following the Terraform workflow — Write > Plan > Apply — to deploy a virtual machine (VM) in AWS. After a successful deployment, we will then clean up our infrastructure and destroy the resource we created.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a Directory and Write Your Terraform Code (Write)
  1. Create a new directory in the cloud_user’s home directory to house your Terraform code called terraform_code.
  2. Create a new file for your code called
  3. Add the provided code for creating your VM (as an EC2 instance in AWS) to the file.
Plug the Provided AMI and Subnet ID Values Into Your Code
  1. Copy the AMI and subnet ID for the VM that have been saved in the resource_ids.txt file on the lab server.
  2. Paste these values into your code in the file.
Initialize and Review Your Terraform Code (Plan)
  1. Initialize your Terraform configuration with the terraform init command.
  2. Review the actions that will be performed when code is deployed using the terraform plan command.
Deploy Your Terraform Code (Apply), Verify Your Resources, and Clean Up
  1. Deploy the code with the terraform apply command.
  2. Verify that your resource was created as intended in the AWS Management Console.
  3. Tear down the infrastructure using the terraform destroy command.
  4. Verify that your resource was destroyed and removed in the AWS Management Console.

Additional Resources

To create your EC2 instance (VM) in AWS, use the code provided below:

provider "aws" {
  region = "us-east-1"
resource "aws_instance" "vm" {
  ami           = "DUMMY_VALUE_AMI_ID"
  subnet_id     = "DUMMY_VALUE_SUBNET_ID"
  instance_type = "t3.micro"
  tags = {
    Name = "my-first-tf-node"

Note: Please ensure that all resources are deployed in the AWS region us-east-1.

The Amazon Machine Image (AMI) ID and subnet ID has been placed in a file on the lab server called resource_ids.txt. You will access that file and copy/paste these values into your code to create your VM.

To make sure the lab is fully provisioned, please wait an extra minute or two before connecting via ssh to the lab provided server.

ssh cloud_user@<Terraform-Controller>

And, in a web browser, log in to the AWS Management Console using the credentials provided.

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?