Skip to content

Instantly share code, notes, and snippets.

@sammso
Last active June 28, 2022 07:09
Show Gist options
  • Save sammso/9ca31ad84cebe042f7e26c14b2e3d5e6 to your computer and use it in GitHub Desktop.
Save sammso/9ca31ad84cebe042f7e26c14b2e3d5e6 to your computer and use it in GitHub Desktop.
Systems Operations on AWS

Systems Operations on AWS - Lab 2L - Creating Amazon EC2 Instances (Linux)

Task 3: Launch an Instance using the AWS CLI

This command gets current Availability Zone

# Set the Region - 
AZ=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
export AWS_DEFAULT_REGION=${AZ::-1}

# Obtain latest Linux AMI
AMI=$(aws ssm get-parameters --names /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 --query 'Parameters[0].[Value]' --output text)

echo $AMI

Obtain the Subnet to Use

SUBNET=$(aws ec2 describe-subnets --filters 'Name=tag:Name,Values=Public Subnet' --query Subnets[].SubnetId --output text)

echo $SUBNET

Obtain the Security Group to Use

SG=$(aws ec2 describe-security-groups --filters Name=group-name,Values=WebSecurityGroup --query SecurityGroups[].GroupId --output text)

echo $SG

Download a User Data script

wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-100-SYSOPS/v3.3.1/lab-2-ec2-linux/scripts/UserData.txt
cat UserData.txt

Launch the Instance

INSTANCE=$(\
aws ec2 run-instances \
--image-id $AMI \
--subnet-id $SUBNET \
--security-group-ids $SG \
--user-data file:///home/ec2-user/UserData.txt \
--instance-type t2.micro \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Web Server}]' \
--query 'Instances[*].InstanceId' \
--output text \
)

echo $INSTANCE

See if instance is ready

All information

aws ec2 describe-instances --instance-ids $INSTANCE

Instance status

aws ec2 describe-instances --instance-ids $INSTANCE --query 'Reservations[].Instances[].State.Name' --output text

Get the public DNS name

aws ec2 describe-instances --instance-ids $INSTANCE --query Reservations[].Instances[].PublicDnsName --output text

Challenge 1: Connect to an Amazon EC2 Instance

Get all instances and name

aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,PublicIpAddress,Tags[?Key==`Name`]| [0].Value]' --output table
[ec2-user@ip-10-0-0-131 ~]$ aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,PublicIpAddress,Tags[?Key==`Name`]| [0].Value]' --output table
----------------------------------------------------------------------------------
|                                DescribeInstances                               |
+----------------------+-----------+----------------+----------------------------+
|  i-0f6ed3432eb67977b |  t2.micro |  34.216.221.18 |  Misconfigured Web Server  |
|  i-0a7bb78f35591e601 |  t2.micro |  35.164.2.187  |  Web Server                |
|  i-09fbeab7867367d39 |  t2.micro |  34.219.151.63 |  Bastion Server            |
+----------------------+-----------+----------------+----------------------------+
[ec2-user@ip-10-0-0-131 ~]$ aws ec2 describe-instance-attribute --instance-id i-0f6ed3432eb67977b --attribute groupSet
{
    "InstanceId": "i-0f6ed3432eb67977b", 
    "Groups": [
        {
            "GroupId": "sg-015fde9e14e07ef66"
        }
    ]
}
[ec2-user@ip-10-0-0-131 ~]$ aws ec2 authorize-security-group-ingress --group-id sg-015fde9e14e07ef66 --protocol tcp --port 22 --cidr "0.0.0.0/0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment