Getting started with the Terraform for managing a base free-tier AWS resources
This is a Terraform project for managing AWS resources.
It can build the next infrastructure:
- One VPC
- One public Subnet in the
VPC
- One IGW to enable access to or from the internet for
VPC
- One Route Table to associate
IGW
,VPC
andSubnet
- One EC2 Instance in the public
Subnet
with the HTTP(s) access and SSH access
- Install Terraform
- Create AWS account
- Create
~/.aws/credentials
file if not exists and add you Terraform profile. For example:[terraform] aws_access_key_id = Your access key aws_secret_access_key = Your secret access key
- Create S3 bucket to store Terraform state
- Create config file
./src/free-tier/backend/config.tf
that will contain information how to store state in a given bucket. See example. - Create SSH key pair to connect to EC2 instance:
cd ./src/free-tier/provision/access # it creates "free-tier-ec2-key" private key and "free-tier-ec2-key.pub" public key ssh-keygen -f free-tier-ec2-key
cd ./src/free-tier
terraform init -backend-config="./backend/config.tf"
terraform plan
terraform apply
After building the infrastructure you can try to connect to you EC2 instance
via SSH:
cd ./src/free-tier
ssh -i ./provision/access/free-tier-ec2-key ubuntu@[EC2 public IP]
To check HTTP access you can install apache2
on your EC2 instance:
ssh -i ./provision/access/free-tier-ec2-key ubuntu@[EC2 public IP]
sudo apt install apache2
(on EC2 machine)sudo service apache2 start
(on EC2 machine)- Check in browser:
http://[EC2 public IP]/
. You can seeApache2 Default Page
(Something like this)
To destroy infrastructure:
cd ./src/free-tier
terraform destroy