ansible share image

This is the first article in a series that covers the end-to-end process of creating an Elastic Compute Cloud (EC2) instance on Amazon Web Services (AWS) using Red Hat Ansible Automation Platform. This tutorial demonstrates the steps required to set up the necessary resources to create an EC2 instance using the AWS module in Ansible Automation Platform.

Follow our 3-part series:

Part 1: How to create an EC2 instance in AWS using Ansible CLI

Part 2: How to create an EC2 instance in AWS using Ansible Automation 

Part 3: How to create an EC2 instance in AWS using Ansible workflow

By the end of this article, you will have a better understanding of how to use the Ansible Automation Platform CLI to manage an EC2 instance and how it can help to streamline your infrastructure management workflows.

Prerequisites

How to create an EC2 instance

The following steps demonstrate how to use the Ansible Automation Platform CLI to create an EC2 instance on AWS.

  • Step 1: Generate the access key and secret key from the AWS documentation.
  • Step 2: Open any editor on your local machine and enter the following .yml:
--- # Creating an EC2 Instance 

- name: Creating an EC2 Instance with ansible cli

  hosts: localhost

  vars:

    region: ap-south-1

    instance_type: t3.micro

    ami: ami-0f9d9a251c1a44858

    key_name: ansible-demo

    vpc_name: ansible-vpc-test

    cidr_block: "10.10.0.0/16"

    cidr: "10.10.0.0/24"

    aws_access_key:<YOUR ACCESS KEY>

    aws_secret_key: <YOUR SECRET KEY>


  tasks:

    - name: Create a new VPC 

      amazon.aws.ec2_vpc_net:

        name: "Ansible-Test"

        cidr_block: "{{ cidr_block }}"

        aws_access_key: "{{ aws_access_key }}"

        aws_secret_key: "{{ aws_secret_key }}"

        region: "{{ region }}"

      register: vpc


    - name: Create a new Subnet

      amazon.aws.ec2_vpc_subnet:

        aws_access_key: "{{ aws_access_key }}"

        aws_secret_key: "{{ aws_secret_key }}"

        cidr: "{{ cidr }}"

        region: "{{ region }}"

        vpc_id: "{{ vpc.vpc.id }}"

      register: subnet
    

    - name: Create a Security Group  

      amazon.aws.ec2_security_group:

        name: "Ansible-Test-Security-Group"

        description: "Ansible-Testing"

        aws_access_key: "{{ aws_access_key }}"

        aws_secret_key: "{{ aws_secret_key }}"

        vpc_id: "{{ vpc.vpc.id }}"

        region: "{{ region }}"

        rules:

          - proto: tcp

            ports:

            - 80

            cidr_ip: 0.0.0.0/0

            rule_desc: "allow all on port 80"

      register: security_group
   

    - name: Launch an EC2 Instance

      amazon.aws.ec2_instance:

        name: "Test-Ansible"

        key_name: "{{ key_name }}"

        aws_access_key: "{{ aws_access_key }}"

        aws_secret_key: "{{ aws_secret_key }}"

        vpc_subnet_id: "{{ subnet.subnet.id }}"

        instance_type: "{{ instance_type }}"

        security_group: "{{ security_group.group_id  }}"

        count: 1

        wait: yes

        aws_region: "ap-south-1"

        network:

          assign_public_ip: true

        image_id: "{{ ami }}"
  • Step 3: Save and close the file. 
  • Step 4: Open the terminal in the directory where the file is located on your local machine.
  • Step 5: Run the following command:
    ansible-playbook <filename>.yml

The output is as follows:

ansible-playbook create_ec2_cli.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [Creating an EC2 Instance with ansible cli] ******************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]

TASK [Create a new VPC] *******************************************************************************************************************************************************************************************
changed: [localhost]

TASK [Create a new Subnet] ****************************************************************************************************************************************************************************************
changed: [localhost]

TASK [Create a Security Group] ************************************************************************************************************************************************************************************
changed: [localhost]

TASK [Launch an EC2 Instance] *************************************************************************************************************************************************************************************
changed: [localhost]

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Figure 1 illustrates the EC2 instance in AWS.

A screenshot of the EC2 instance in AWS.
Figure 1: The EC2 instance in AWS.

Stay tuned for more learning opportunities

In this article, we have demonstrated how to create an EC2 instance using Ansible Automation Platform. By following this step-by-step guide, you should now have a good understanding of how to use Ansible Automation Platform to create an EC2 instance on AWS. To learn more about Ansible Automation Platform and additional resources and guides, including examples and use cases, we recommend visiting the Red Hat Ansible Automation Platform learning portal.

If you are interested in exploring how to use Ansible Automation Platform on Azure, you can try hands-on interactive labs. These labs show how to automate infrastructure deployment. To understand automation more in-depth, you can refer to the e-book An IT executive's guide to automation, which provides a comprehensive overview of automation's impact on businesses. If you are new to Ansible Automation Platform, you can download it and get started by exploring interactive labs at no cost. Keep exploring and stay up to date with the latest trends and techniques in cloud infrastructure management on Red Hat Developer.

In our next article, we will explore how Ansible Automation Platform further eases the process of creating EC2 instances, by enabling you to define infrastructure as code, track infrastructure changes, and enforce compliance policies.

Last updated: January 11, 2024