Automating Infrastructure Deployments (IAAS) in AWS Cloud with Ansible

The world is moving towards automation and automation with Ansible makes organizational operations easier while managing company-wide infrastructure.

Ansible is a free-to-use open source automation language. Ansible can help us with various activities related to configuration management, application deployment and task automation. It can also do IT orchestration, where you have to run tasks in sequence and create a chain of events that must happen on several different servers or devices. So, in short, you can handle complex tasks with a tool, which is easy to use.

 

What is Ansible?

Ansible is a simple and powerful automation language. It helps to automate, accelerate, collaborate with and integrate technologies that we already use. Ansible is used to perform the same set of tasks across different servers from the centralized server where it is installed. One advantage of Ansible is that it is completely agentless. It implies no agent needs to be installed on client systems where you want the automation to be done. It merely requires SSH communication between the client and the server. All this automation will be easier when there are hundreds of instances in the specified region.

 

Why Ansible?

For the past few years, we have experienced many disruptions in business trends. This has led to building a constructive and non-disruptive way of transformation for megatrends associated with emerging technologies, and one such thing is 'AUTOMATION'. 

Automation can be achieved by Ansible’s efficient code, which replaces repetitive and routine day to day activities. To migrate dozens of workloads to AWS, with Ansible, you can use the same simple playbook language to manage your infrastructure and deploy your application. To make life easier you may need to have a solution in your local environment too. Setting up an infrastructure for all IT related activities can be automated as below.

 

Implementing Ansible solutions with cloud environment:

ansible

There are many different ways for provisioning an instance. To be precise,‘provisioning' means getting everything ready, by installing and configuring all required prerequisites in an automated manner. The basic requirements for a cloud instance are, having a network, storage and compute. When you meet those requirements, all the tasks can be easily automated with the help of Ansible playbooks. Following are some of the tasks that can be executed with the help of Ansible playbook.

  • Starting, Stopping, Deleting and Restarting an Instance in the Specified Region
  • Gathering Facts about an Instance in the Cloud
  • Creating Disk and Attaching the Disk to a Specific Instance
  • Creating network components like VPC, Subnet, Security group, etc.
  • Attaching storage
  • Listing the objects inside the bucket
  • Deleting buckets
  • Instance provisioning

 

Sample Playbook for provisioning an instance in AWS cloud:

 

- name: Provision an EC2 Instance

    hosts: localhost

    connection: local

gather_facts: False

    tags: provisioning

 

    vars:

instance_type: t2.micro

security_group: webservers

      image: ami-082b5a644766e0e6f

      region: us-west-2

      keypair: ansible_aws_ec2

      count: 1

 

    tasks:

      - name: Create New security group with below given name

local_action:

          module: ec2_group

name: "{{ security_group }}"

          description: Security Group for Newly Created EC2 Instance

region: "{{ region }}"

          rules:

            - proto: tcp

from_port: 22

to_port: 22

cidr_ip: 0.0.0.0/0

            - proto: tcp

from_port: 80

to_port: 80

cidr_ip: 0.0.0.0/0

rules_egress:

            - proto: all

cidr_ip: 0.0.0.0/0

      - name: Launch the new t2 micro EC2 Instance

local_action: ec2

group={{ security_group }}

instance_type={{ instance_type}}

image={{ image }}

                      wait=true

region={{ region }}

keypair={{ keypair }}

                      count={{count}}

        register: ec2

      - name: Wait for EC2 Instance to Spin-up and ready for SSH access

local_action: wait_for

host={{item.public_ip}}

                      port=22

                      state=started

with_items: "{{ ec2.instances }}"

      - name: Adding Tags to Identify

local_action: ec2_tag resource={{item.id}} region={{ region }} state=present

with_items: "{{ ec2.instances }}"

...

To learn more about OneGlobe’s Cloud Migration Services

visit https://bit.ly/2LF19gA

Kalapriya Kolappan

Written by Kalapriya Kolappan

  1 Comment

Subscribe to our blog