Automate AWS using Terraform

Why take this course?
Let's create an EC2 instance on AWS using Terraform, following the steps outlined in your prompt. We will assume that you have already set up your Terraform environment and have the necessary permissions to create resources in your AWS account.
First, let's define the variables we need for our EC2 instance:
variable "region" {
description = "AWS region where instances will be launched"
default = "us-west-2"
}
variable "instance_type" {
description = "Type of instance to start"
default = "t2.micro"
}
variable "key_name" {
description = "Name of an existing EC2 KeyPair to enable SSH access"
default = "my-ec2-key pair"
}
Next, we'll define the provider and resource for our EC2 instance:
provider "aws" {
region = var.region
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0" # Replace with the latest ubuntu/amazon linux 2 AMI for your region
instance_type = var.instance_type
key_name = var.key_name
tags = {
Name = "My-EC2-Instance"
}
}
Now, let's add the necessary configuration to create a security group that allows SSH access:
resource "aws_security_group" "example" {
name = "my-sg"
description = "Allow SSH inbound traffic"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "My-SG-Example"
}
}
resource "aws_instance" "example" {
depends_on = [aws_security_group.example]
association {
instance_id = aws_instance.example.id
name = "default"
ipv6_addresses = false
}
# ... (previous configuration)
}
We've set up the security group after the instance so that the instance will automatically be associated with the security group upon creation.
Finally, let's write the main Terraform application to run our setup:
provider "aws" {
region = var.region
}
resource "aws_security_group" "example" {
# ... (as defined above)
}
resource "aws_instance" "example" {
# ... (as defined above)
}
variable "region" {
description = "AWS region where instances will be launched"
default = "us-west-2"
}
variable "instance_type" {
description = "Type of instance to start"
default = "t2.micro"
}
variable "key_name" {
description = "Name of an existing EC2 KeyPair to enable SSH access"
default = "my-ec2-key pair"
}
To run this Terraform configuration, save it to a .tf
file and initialize the Terraform environment with:
terraform init
Then, validate the configuration using:
terraform validate
Finally, apply the configuration with:
terraform apply
Follow the prompts to confirm the creation of the resources. Once applied, Terraform will provision an EC2 instance in the specified AWS region, with the security group allowing SSH access.
Remember to replace the AMI ID and key pair name with those relevant to your setup. Also, ensure that the AWS provider is correctly configured with your AWS credentials and default region.
For the mock tests and the more advanced parts of your project, you would expand on this setup by adding resources like VPCs, subnets, internet gateways, route tables, and possibly a VPN connection to establish a highly available multi-cloud setup between AWS and Azure. You would also use Terraform modules or remote state configurations for better organization and collaboration.
Course Gallery




Loading charts...