CONFIGURING WEBSERVER ON AWS EC2 INSTANCE USING ANSIBLE
HELLO GUYS THIS IS RAGHAV TIWARI ONCE AGAIN ,
IN THIS ARTICLE I AM GONNA SHOW YOU HOW TO CONFIGURE AND LAUNCH THE APACHE WEBSERVER USING ANSIBLE FOR DOING THIS I AM USING REDHAT ENTERPRISE LINUX VERSION 8(RHEL8) AS A CONTROLLER NODE AND AWS EC2-INSTANCE AS MANAGED NODE
STEPS THAT I WILL :
♦️Provision EC2 instance through ansible.
♦️Retrieve the IP Address of instance using dynamic inventory concept.
♦️Configure the web server through ansible!
♦️Create role for webserver to customize the Instance and deploy the webpage to root directory.
PREREQUISITES TO UNDERSTAND THIS ARTICLE-
-READER SHOULD HAVE GOOD KNOWLEDGE OF LINUX TRMINAL, YML LANGUAGE, HAVE GOOD IDEA ABOUT PLAYBOOK AND ROLES IN ANSIBLE
---------------------------------------------------------------------------------------------------------------
SO LETS GET STARTED::
STEP1: PROVISINING EC2-INSTANCE USING ANSIBLE
- FOR THIS STEP FIRST OF ALL I WILL CREATE A ROLE FOR THIS IN OUR CONTROLLER NODE i.e. RHEL8 , S YOU CAN SEE IN THE BELOW SCREENSHOT
- IN THIS ROLE NOW WE WILL MOVE THIS ROLE TO ONE OF MY FOLDER NAMED myroles JUST FOR MANAGEMENT PURPOSE
- IN BELOW PIC YOU CAN SEE THE FOLDER NAMED AS <ec2provisioning> IS MY ROLE FOLDER FOR EC2 PROVISIONING IN THIS FOLDER WE HAVE MANY DIFFERENT TYPES OF FOLDER NAMED AS tasks, handlers, templates, files, etc. FOR EC2 INSTANCE LAUNCH I HAVE USED ONLY TWP OF THEM i.e. tasks folder WHERE IN main.yml FILE OUR MAIN CODE IS PRESENT WHICH CONTAINS THE CONFIGURATION CODE AND IN vars folder AGAIN THERE IS main.yml WHICH CONTAINS THE USER ACCESS KEY AND SECRET KEY OF IAM USER FOR LOGIN PURPOSE.
- LETS HAVE A LOOK IN THE tasks and vars FOLDER :::
1.) tasks folder::
-main.yml file:
2.) vars folder: it contains credentials for login into AWS account in increpted format using concept of vault in ANSIBLE. so i will just show you the file location
NOW LETS RUN THIS ROLE AND LAUNCH OUR EC2-INSTANCE.................
-TO LAUNCH THIS ROLE WE HAVE TO CREATE AN EXTRA FILE OF YML FORMAT
- LETS RUN THIS FILE-
(the screen background is white becoz i am accessing my Controller node from putty)
---------------------------------------------------------------------------------------------------------------NOW COMES THE MAIN WE HAVE LAUNCHED OUR EC2-INSTANCE SUCCESSFULLY NOW WE HAVE TO RETRIVE THIS INSTANCE IP WITHOUT GOING TO AWS LETS SEE HOW,
STEP2: Retrieve the IP Address of instance using dynamic inventory concept.
ANSIBLE COMMUNITY HAS DEVELOPED AND PROVIDED SOME PRECREATED CODE IN PYTHON (ansible is also a software built on python as a base)
to use this python code first we have to install boto liberary of pythonto use this python code first we have to install boto liberary of python
---PYTHON CODE ON GITHUB WHICH WE WILL USE TO DYNAMICALLY RETRIVE THE IP ADDRESS
github link for this python code ::: click me
- lets download this code and retrieve the ip address
-this code is in location < /cloudhost > folder
-IN ABVE PIC WE ALSO HAVE MADE THIS COMMAND EXECUTABLE THIS RED ENCIRCLED COMMAND WILL RETRIEVE ALL THE INFO ABOUT THE EC2 INSTANCE WE LAUNCHED ON AWS
-HERE IS THE IP ADDRESS IN THE ABOVE COMMAND OUTPUT
AFTER LAUNCHING EC2 WE HAVE TO GIVE ROOT POWER TO THIS INSTANCE FOR THIS WE HAVE TO EDIT sshd_config file and sudoers file and i have done this part manually
---------------------------------------------------------------------------------------------------------------
STEP3: Configure the web server through ansible! and creating role for webserver to customize the Instance and deploy the webpage to root directory.
-AGAIN FIRST OF ALL I HAVE TO CREATE ROLE FOR CONFIGURING WEBSERVER
-I HAVE ALREADY CREATED ROLE FOR WEBSERVER ALSO AS YOU CAN SEE IN THE ORANGE BOX
-LETS GET INSIDE THIS FOLDER AND HAVE A LOOK
1.) LOCATION OF WEBSERVER
2.) tasks folder
3.) handlers folder
4.) vars folder
5.) templates folder
NOW LETS LAUNCH THIS ROLE AGAIN WE HAVE TO CREATE A SMALL YML FILE TO INITIATE ITS LAUNCH:
-host.yml
-LET US ALSO TAKE A LOOK AT ANSIBLE CONFIGURATION FILE:
-LAUNCHING THIS PLAYBOOK
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NOW ITS TIME TO SEE THE OUTCOME OF ABOVE TWO ROLES, HERE WE GO
1.)EC2 INSTANCE LAUNCH SUCCESSFULLY
2.)WEBSERVER CONFIGURED AND WEBPAGE LAUNCHED SUCCESSFULLY
webpage dir root location changed
-WEBPAGE ON GOOGLE
-----------------------------------THANK YOU---------------------------------------------------------------------------------I HOPE YOU LIKED MY WORK ---------------------------------------------