Day 40 Task: AWS EC2 Automation ☁

Day 40 Task: AWS EC2 Automation ☁

·

5 min read

I hope your journey with AWS cloud and automation is going well

Automation in EC2:

Amazon EC2 provides several automation options for managing and deploying instances. Here are some of the most common methods:

    • Automation in EC2 involves using tools and services to manage and deploy instances automatically.

      • AWS provides several automation options for managing EC2 instances, including Amazon EC2 Auto Scaling, AWS CloudFormation, AWS Elastic Beanstalk, AWS OpsWorks, and AWS Systems Manager.

      • Amazon EC2 Auto Scaling can automatically scale your EC2 capacity based on demand using predefined scaling policies.

      • AWS CloudFormation allows you to create and manage a collection of related AWS resources, including EC2 instances, using templates to define the infrastructure.

      • AWS Elastic Beanstalk provides a platform for deploying and scaling web applications, automatically provisioning and configuring resources.

      • AWS OpsWorks provides a managed configuration platform for deploying and operating applications.

      • AWS Systems Manager provides a suite of tools for managing EC2 instances and other AWS resources, including patching, software installation, and configuration management.

      • These automation options help streamline EC2 deployment and management processes, reducing time and effort required to maintain infrastructure.

Launch template in AWS EC2:

    • A launch template is an AWS EC2 resource that contains information to launch an instance, such as the AMI ID, instance type, and security group settings.

      * It is a reusable and versioned way to store instance configuration details.

      * Launch templates can be used to launch instances either through the EC2 console or programmatically using the AWS CLI or SDKs.

      * User data scripts can be specified in the launch template to run on instance startup to configure applications and settings on the instance.

      * Launch templates can be used with other AWS services, such as Amazon EC2 Auto Scaling and AWS CloudFormation.

      * Launch templates are useful for managing infrastructure as code, versioning and updating templates as needed, and automating the process of creating new instances with the desired configuration.

Instance Types:

  • AWS provides a variety of instance types to support different types of workloads, each with unique combinations of CPU, memory, storage, and network capacity.

  • Ggeneral-purpose instance types include T2, M5, M4, and M3 families, which are designed to provide a balance of compute, memory, and network resources at an affordable price.

  • Compute-optimized instance types include C5, C4, and C3 families, which are optimized for high-performance computing and processing large amounts of data.

  • Memory-optimized instance types include R5, R4, and X1e families, which are designed for applications that require high memory capacity, such as in-memory databases or big data processing.

  • Storage-optimized instance types include I3, D2, and H1 families, which are optimized for applications that require high storage capacity, such as data warehousing or large-scale file processing.

  • GPU-optimized instance types include P3, G3, and F1 families, which are designed for applications that require high-performance graphics processing or parallel computing.

  • AWS also offers instance types with specialized features, such as high-speed networking (instance types with enhanced networking), or support for ARM-based workloads (A1 instance types).

  • Choosing the right instance type is important for optimizing the performance and cost-effectiveness of your workloads on AWS.

AMI:

  • An Amazon Machine Image (AMI) is a pre-configured virtual machine image used to create EC2 instances.

  • AMIs contain all the necessary information to launch an instance, including the OS, application server, and any additional software or configuration required for the instance.

  • AWS provides a variety of pre-configured AMIs, including both Linux and Windows OS images, as well as images optimized for specific workloads.

  • Users can create their own custom AMIs, either by creating an instance with the desired configuration and then saving it as an AMI, or by importing an existing VM image into AWS as an AMI.

  • AMIs are used as templates for creating new instances, making it easy to replicate and deploy a specific configuration of an instance.

  • When launching an instance from an AMI, users can specify the instance type, security groups, and other configuration options for the new instance.

  • AMIs can be shared with other AWS users, either publicly or privately, making it easy to distribute and deploy a specific configuration of an instance to multiple users.

Task1:

    • Create a launch template with Amazon Linux 2 AMI and t2.micro instance type with Jenkins and Docker setup (You can use the Day 39 User data script for installing the required tools.

      * Create 3 Instances using Launch Template, there must be an option that shows number of instances to be launched ,can you find it? :)

      * You can go one step ahead and create an auto-scaling group, sounds tough?

      ### Steps

      1. Go to the Amazon EC2 console and click on "Launch Templates" in the left sidebar.

      2. Click on "Create launch template" button.

      3. In the "Create launch template" page, provide a name for the template and select the Amazon Linux 2 AMI from the AMI dropdown.

      4. In the "Instance type" section, select "t2.micro" instance type.

      5. Scroll down to the "Advanced Details" section, and copy and paste the following script in the "User data" section:

          #!/bin/bash
          yum update -y
          yum install -y java-1.8.0-openjdk-devel
          amazon-linux-extras install docker -y
          service docker start
          usermod -a -G docker ec2-user
          systemctl enable docker.service
          wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
          rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
          yum upgrade -y && yum install -y jenkins
          systemctl start jenkins.service
          systemctl enable jenkins.service
      

      This script installs Docker and Jenkins on the instance.

      6. Click on "Create launch template" to save the template.

      7. To launch instances using this launch template, click on "Actions" and then "Launch Instance(s)".

      8. In the "Number of Instances" field, Launch 3 Instances

      9. Finally, you can create an auto-scaling group that uses this launch template. To do this, go to the EC2 console and click on "Auto Scaling Groups" in the left navigation menu. Click on "Create Auto Scaling Group".

      10. Choose your launch template and configure the auto-scaling group settings as desired.

      That's it! You now have a launch template with Jenkins and Docker setup, and you can launch instances and create an auto-scaling group using this template.

Happy Learning :)

******************************THANK YOU*************************************