This project automates the deployment process of a Strapi app on AWS EC2 using Terraform, Python, and Bash scripting. This Automation Project follows the steps
-
Packages: Python3, Git, Terraform
-
Strapi App:
-
You need to have a Strapi app hosted on GitHub.
If you don't have the app, you can create a Strapi project using the Strapi Quickstart and push it to the GitHub. Run the following command to create a Strapi app:
npx create-strapi-app@latest my-project --quickstart
-
-
AWS Account:
An AWS account with the necessary permissions to create EC2 instances, RDS databases, and S3 buckets.
Clone the Strapi app repository on your development machine.
git clone https://github.com/VinayakSingoriya/Strapi-Automation.git
cd Strapi-Automation
Generate an SSH Key pair on development machine.
ssh-keygen
Create a terraform.tfvars file and provide the necessary key-value pairs based on your AWS environment and Strapi app configuration.
# Region and Access Credentials
region = ""
access_key = ""
secret_key = ""
# Instance Information
instance_type = "t2.small"
image_name = "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"
# Key-Pair
key_name = ""
private_key_path = ""
public_key_path = ""
# EC2 Security Group
instance_security_group_name = ""
inbound_ports = [80, 443, 22, 1337]
# AWS RDS Security Group
db_security_group_name = ""
# AWS RDS Configuration
db_username = ""
db_password = ""
#path
project_root_path = "" # set the root path of the Strapi project (which is on development machine)
terraform_root_path = "" # set the root path of the Terraform code (which is on development machine)
# Git Credentials
# git clone https://$GIT_USERNAME:[email protected]/your_username/your_repo.git
gitUsername = "" # GIT_USERNAME
gitPassword = "" # GIT_PASSWORD
your_username = ""
your_repo = ""
Run the following commands to initialize Terraform and plan the infrastructure.
terraform init
terraform plan
You can start the automation process by running the following command:
terraform apply --auto-approve
Use the --auto-approve flag to automatically apply changes without user intervention.
At the end of the automation process, the terraform will provide the Access points of the following:
- AWS RDS Endpoints
- AWS S3 Endpoints
- AWS EC2 Public IP
You can access the Strapi App using the public IP of the AWS EC2 machine.
http://<ec2_instance_public_ip>