# 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
SUBNET=$(aws ec2 describe-subnets --filters 'Name=tag:Name,Values=Public Subnet' --query Subnets[].SubnetId --output text)
echo $SUBNET
SG=$(aws ec2 describe-security-groups --filters Name=group-name,Values=WebSecurityGroup --query SecurityGroups[].GroupId --output text)
echo $SG
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
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
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
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"