Deploy a Highly Available Website with Terraform on AWS
An attractive feature of the cloud is that you can deploy applications in multiple data centers making them highly available and able to tolerate a high degree of failures. In this Lab, you will deploy a secure and highly available website with Terraform on AWS using a two-tier architecture with private and public subnets. The web servers and Elastic Load Balancer will span multiple availability zones to achieve high availability.
Lab Objectives
Upon completion of this Lab you will be able to:
- Apply infrastructure changes in Terraform
- Configure all the network and security infrastructure needed to deploy a highly available website
- Use user data to bootstrap web servers
- Destroy infrastructure managed by Terraform
Lab Prerequisites
You should be familiar with:
- Working at the command-line in Linux
- Amazon VPC, EC2, and Elastic Load Balancing basics
- Basic Terraform concepts such as resources, and state. It is highly recommended to complete the Create AWS Resources with Terraform Lab and the Manage AWS Resources with Terraform Lab before attempting this Lab.
Lab Environment
Before completing the Lab instructions, the environment will look as follows:
After completing the Lab instructions, the environment should look similar to:
Updates
April 20th, 2023 - Resolved an issue that caused the lab to fail to set up on rare occasions
November 22nd, 2022 - Updated lab to use EC2 Instance Connect and added checks
January 10th, 2019 - Added a validation Lab Step to check the work you perform in the Lab
Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Security Specialist (CKS), Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.