Devops Code Challenge 1 – AWS automation

Devops Code Challenge

AWS Automation

Automate the following tasks with your own choice of scripting language.

Task 1: Automate the EC2 instance creation under load balancer.

1. Create a VPC with should have a public and private subnet

2. Create a role with s3 access.

3. Launch an ec2 instance with the role created in step 1, inside the private subnet of VPC, and install apache through

bootstrapping. ( You need to have your NAT gateway attached to your private subnet )

4. Create a load balancer in public subnet.

5. Add the ec2 instance, under the load balancer

 

 

Task 2: Automate the process of stop ( For cost saving )

Automate the process of stop to a group of EC2 instances (based on tags). Ensure that there is no user
logged into the servers, and CPU usage is idle ( less than 10% ) for the particular period of time before stopping. The idle period and tag will be passed as arguments.
usage: autostop <Tag name> < idle period>

For example:

 autostop <development> 30

If the current time is 7 PM, the script needs to check the idle development instances in the last 30
minutes ( 6.30 PM to 7 PM ) and make sure no users are logged into those instances before stopping them. Don’t set up permanent cloudwatch alarm to stop the instances. The script needs to run on-demand for stopping the instances.

 

Bonus Task:
Once you have the basic functionality implemented, try to do the following bonus exercises in Task 1:

1. Create an auto scaling group with minimum size of 1 and maximum size of 3 with load balancer
created in step 3 of Task 1 .

2. Add the created instance under the auto scaling group. ( You need to have an AMI created out of previously created instance in Task 1 which has apache installed in it)

3. Write a life cycle policy with the following parameters:

scale in : CPU utilization > 80%

scale out : CPU Utilization < 60%

 

Use the comment section to provide your solution by uploading your code in any of the code repository. Mail us at [email protected] if you have any questions.

 


 

Solution

One way to complete Task 1 along with the bonus task is by using Ansible. Ansible has a lot of pre-defined AWS modules which makes our work easy managing AWS components.

Solution: Task 1 and bonus task ( Using Ansible )

 

Task 2 can be completed by using any scripting language of your choice. A bash script way of doing it is explained here. Here we make use of cloudwatch monitoring metrics to verify CPU idle condition.

Solution:   Task 2 ( Using bash)