We will learn how to create a simple Ansible Playbook for provisioning a new EC2 instance in AWS cloud. Please follow the below steps in the machine where you have installed Ansible.
Pre-requisites:
- Ansible is installed and Boto is also installed on Ubuntu EC2 instance
- Make sure you create an IAM role with AmazonEC2FullAccess policy and attach the role to EC2 instance.
Steps to create EC2 instance using Ansible:
Add the below two lines in the end of the file:
[localhost]
local
ansible-playbook create_ec2.yml
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5-6pBjm01f3v0QpeUYCQKOw7wGzpW-rp2_5y6aPi1HFIPY7fmXIlqUR01VU_9uPv8xKRkKV94RPNlCI7qc0-e_lmxkdmSlqWiIPvGfGb4gFYugLhGeP8m7TaEA_T55b-Uqcl9BnNmrXR9Cqh9rzX6gkRB18RlCLRhwADWpCRscZIdnKicGPfuOX13wtE/s320/Screenshot%202024-01-22%20at%202.08.58%20PM.png)
That's it!! That is how you create a new EC2 instance using Ansible.
Login to EC2 instance using Git bash or iTerm/putty where you installed Ansible. Execute the below command:
Create an Inventory file first
sudo mkdir /etc/ansible
Edit Ansible hosts or inventory file
sudo vi /etc/ansible/hosts
Add the below two lines in the end of the file:
[localhost]
local
cd ~
mkdir playbooks
mkdir playbooks
cd playbooks
Create Ansible playbook
sudo vi create-ec2.yml
(copy the below content in green color)
(copy the below content in green color)
edit the create-ec2.yml to make sure you update the key, AMI and region code which is red marked below:
- name: Ansible ec2 launch
hosts: localhost
connection: local
gather_facts: False
tags: provisioning
vars:
keypair: myNov2023Key
instance_type: t2.small
instance_name: test-ec2-instance
image: ami-007855ac798b5175e
wait: yes
group: webserver
region: us-east-1
security_group: my-jenkins-security-grp1
tasks:
- name: configuring security group for the instance
ec2_group:
name: "{{ security_group }}"
description: my-jenkins-security_group
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
- proto: tcp
from_port: 8080
to_port: 8080
cidr_ip: 0.0.0.0/0
rules_egress:
- proto: all
cidr_ip: 0.0.0.0/0
- name: creating ec2 instance
ec2_instance:
security_group: "{{ security_group }}"
name: "{{ instance_name }}"
key_name: "{{ keypair }}"
instance_type: "{{ instance_type}}"
image_id: "{{ image }}"
region: "{{ region }}"
wait_timeout: 3
now execute the ansible playbook byansible-playbook create_ec2.yml
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5-6pBjm01f3v0QpeUYCQKOw7wGzpW-rp2_5y6aPi1HFIPY7fmXIlqUR01VU_9uPv8xKRkKV94RPNlCI7qc0-e_lmxkdmSlqWiIPvGfGb4gFYugLhGeP8m7TaEA_T55b-Uqcl9BnNmrXR9Cqh9rzX6gkRB18RlCLRhwADWpCRscZIdnKicGPfuOX13wtE/s320/Screenshot%202024-01-22%20at%202.08.58%20PM.png)
If everything is good, you should see the new instance created on AWS console. make sure you are able to connect to that instance.
That's it!! That is how you create a new EC2 instance using Ansible.
Watch steps in YouTube channel:
No comments:
Post a Comment