41 lines
1.8 KiB
Bash
41 lines
1.8 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Variables
|
||
|
KEY_NAME="uam-bwc-key"
|
||
|
INSTANCE_TYPE="t2.micro"
|
||
|
SECURITY_GROUP_NAME="uam-bwc-sg"
|
||
|
AMI_ID="ami-0ddc798b3f1a5117e"
|
||
|
REGION="us-east-1"
|
||
|
|
||
|
# Generate SSH key pair
|
||
|
aws ec2 create-key-pair --key-name $KEY_NAME --query 'KeyMaterial' --output text --region $REGION > ${KEY_NAME}.pem
|
||
|
chmod 400 ${KEY_NAME}.pem
|
||
|
|
||
|
# Create security group
|
||
|
SECURITY_GROUP_ID=$(aws ec2 create-security-group --group-name $SECURITY_GROUP_NAME --description "Security group for uam-bwc EC2 instance" --query 'GroupId' --output text --region $REGION)
|
||
|
|
||
|
# Add rules to security group
|
||
|
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 22 --cidr 0.0.0.0/0 --region $REGION
|
||
|
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 80 --cidr 0.0.0.0/0 --region $REGION
|
||
|
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 443 --cidr 0.0.0.0/0 --region $REGION
|
||
|
|
||
|
# User data script
|
||
|
USER_DATA_SCRIPT=$(cat <<EOF
|
||
|
#!/bin/bash
|
||
|
yum install -y httpd
|
||
|
systemctl start httpd
|
||
|
curl -O https://inspector-agent.amazonaws.com/linux/latest/install
|
||
|
sudo bash install
|
||
|
EOF
|
||
|
)
|
||
|
|
||
|
# Provision EC2 instance
|
||
|
INSTANCE_ID=$(aws ec2 run-instances --image-id $AMI_ID --count 1 --instance-type $INSTANCE_TYPE --key-name $KEY_NAME --security-group-ids $SECURITY_GROUP_ID --user-data "$USER_DATA_SCRIPT" --query 'Instances[0].InstanceId' --output text --region $REGION)
|
||
|
|
||
|
# Wait for the instance to be in running state
|
||
|
aws ec2 wait instance-running --instance-ids $INSTANCE_ID --region $REGION
|
||
|
|
||
|
# Get the public IP of the instance
|
||
|
INSTANCE_PUBLIC_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[0].Instances[0].PublicIpAddress' --output text --region $REGION)
|
||
|
|
||
|
echo "EC2 instance is running. Public IP: $INSTANCE_PUBLIC_IP"
|