Introduction
Setting up an Amazon EC2 instance manually can be time-consuming, especially when configuring a LAMP stack (Linux, Apache, MySQL, PHP). This guide introduces a Bash script that simplifies the process, automating tasks such as AWS CLI installation, EC2 instance configuration, and LAMP stack setup. Whether you’re new to AWS or a seasoned cloud engineer, this script can save you significant time and effort.
Prerequisites
Before running the script, ensure you have the following:
- AWS account: Permissions to launch EC2 instances and configure security groups.
- Key pair: Created in the AWS region you plan to use.
-
System requirements: A Debian-based Linux system with
apt-get
package manager.
Features
The script provides the following functionalities:
- AWS CLI Check & Installation: Verifies if the AWS CLI is installed and installs it if missing.
- Instance Launch: Automates EC2 instance creation with user-specified parameters.
- Security Group Configuration: Sets up security rules to allow SSH access from your current IP.
- LAMP Stack Installation: Installs and configures Apache, MySQL, and PHP on the instance.
Usage
- Clone or download the script.
- Make it executable:
chmod +x setup_ec2.sh
- Run the script:
./setup_ec2.sh
- Follow the prompts to input:
- AMI Image ID
- Key Pair Name
- Instance Type (e.g., t2.micro)
- AWS Region
- Security Group ID
- Path to your private SSH key
Script Workflow
The script performs the following steps:
1. AWS CLI Check & Installation
If the AWS CLI is not found on your system, the script installs it using apt-get
:
sudo apt-get update
sudo apt install -y awscli
2. AWS CLI Configuration
The script configures the AWS CLI using your access credentials:
aws configure
3. EC2 Instance Launch
Prompts you to enter required parameters, then launches an EC2 instance:
aws ec2 run-instances --image-id $image_id --key-name $key_name --instance-type $instance_type --region $region --query 'Instances[0].InstanceId' --output text
4. Security Group Configuration
Sets up SSH access by authorizing your current IP:
aws ec2 authorize-security-group-ingress --group-id $security_group --protocol tcp --port 22 --cidr $(curl -s https://checkip.amazonaws.com)/32 --region $region
5. Connect and Install LAMP Stack
Uses SSH to log in to the EC2 instance and install the LAMP stack:
ssh -i $PRIVATE_KEY_PATH ubuntu@$public_ip <<EOF
sudo apt update && sudo apt -y upgrade
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql
sudo systemctl enable apache2
sudo systemctl restart apache2
EOF
Example Output
An example of what to expect when running the script:
2024-11-09 12:00:00 - AWS CLI not found. Installing...
2024-11-09 12:01:00 - Configuring AWS CLI
2024-11-09 12:02:00 - EC2 instance i-1234567890abcdef0 launched successfully.
2024-11-09 12:03:00 - EC2 instance public IP: 18.217.123.456
2024-11-09 12:04:00 - Connecting to EC2 instance via SSH...
2024-11-09 12:05:00 - Setting up LAMP server
2024-11-09 12:10:00 - LAMP setup completed on EC2 instance i-1234567890abcdef0
Troubleshooting
-
AWS CLI Installation Fails: Ensure your system is Debian-based and supports
apt-get
. - Instance Launch Fails: Double-check your AWS credentials, region, and instance type.
- SSH Connection Issues: Verify the private key path and ensure security group rules are configured correctly.
Conclusion
This Bash script streamlines the process of setting up an EC2 instance with a LAMP stack, automating repetitive tasks and reducing the potential for errors. By following the steps outlined in this guide, you can deploy a fully functional LAMP server in minutes. Try it out, and feel free to share feedback or suggestions for improvement!
see code here: Automate Your Amazon EC2 Instance Setup with LAMP Stack Using Bash
Source link
lol