DevOps Batch June 2023 – Ansible

DevOps

MOTOSHARE 🚗🏍️
Turning Idle Vehicles into Shared Rides & Earnings

From Idle to Income. From Parked to Purpose.
Earn by Sharing, Ride by Renting.
Where Owners Earn, Riders Move.
Owners Earn. Riders Move. Motoshare Connects.

With Motoshare, every parked vehicle finds a purpose. Owners earn. Renters ride.
🚀 Everyone wins.

Start Your Journey with Motoshare
What is Ansible?
=========================
Config mgmt tool for servers
PLAN -> Dev -> Ana -> Build -> UT -> PACK -> Archive -> Dep2QA -> AT -> CC
Ansible
Config
Server(S)
release
Ansible -> CMD -> FREE
Tower  - UI -> PAID - Support
AWX - UI - FREE - nO support
Python
From Redhat
==============================
Why Ansible?
===================================
Bash	 - Windows?
PS - Linux?
Python 
Easy to learn, extend, test, debug, share
DSL
Ideompotent
1 ------- 1 mins
10 ------- 10 mins
===============================
3 changes	- 3 mins
==============================================
Other - chef - pupppet - salt - cf
=======================================================
How ansible works?
==============================================
Human -> ACS -------> ARS
Linux		any
ansible 	nR
--------------------
Linux -- SSH
Windows - WInrm
Python		Linux - Python
Wndows - PS3.0 , DOTNET4.5
====================================================
What is the component in ACS
======================================
Ansible
Executables
Module		- its a Python Code, which run in ARS with param providers
4000+ Modules + 1000 roles
Plugins		- its a Python Code, which run in ACS & add a featute of Ansible
Config		- a file which has param to override behaviours of Executables
Inventory
a file which contains a IP add of ARS
group
Playbook
a yaml file which contains
hosts: localhost OR group name mentioned in Inventory OR all
tasks:
module1 and its param
module2 and its param
module2 and its param
========================================================
COPY a file in 1 machine
----------------------
cmd 	script?
ansible adhoc command
============================
Project 
Setup a webserver..
Psucode
Step 1 - Install apache2 server in ubuntu		apt name=apache2	state=name
Step 2 - Copy index.html to /var/www/html/index.html	copy src=index.html	dest=/var/www/html/index.html
Step 3  - Start a Process of Apache2			service 	name=apache2 state=started
======================================
ansible localhost -m apt -a"name=apache2 state=present"
ansible localhost -m copy -a"src=index.html dest=/var/www/html/index.html"
ansible localhost -m service -a"name=apache2 state=started"
ansible all -i inventory -m apt -a"name=apache2 state=present" -u ubuntu --key-file=node.pem -b
ansible all -i inventory -m copy -a"src=index.html dest=/var/www/html/index.html"  -u ubuntu --key-file=node.pem -b
ansible all -i inventory -m service -a"name=apache2 state=started"  -u ubuntu --key-file=node.pem -b
ansible web -i inventory -m apt -a"name=apache2 state=present" -u ubuntu --key-file=node.pem -b
ansible web -i inventory -m copy -a"src=index.html dest=/var/www/html/index.html"  -u ubuntu --key-file=node.pem -b
ansible web -i inventory -m service -a"name=apache2 state=started"  -u ubuntu --key-file=node.pem -b
===================================================
How to write a playbook
Playbook
a yaml file which contains
hosts: web
tasks:
module1 and its param
module2 and its param
module2 and its param
---
- name: Update web servers
hosts: web
tasks:
- name: Install Apache in ubuntu
ansible.builtin.apt:
name: "apache2"
state: latest
- name: Copy index.html
ansible.builtin.copy:
src: index.html
dest: /var/www/html/index.html
- name: Starting a Apache Server
ansible.builtin.service:
name: "apache2"
state: started
ansible-playbook -i inventory web.yaml -u ubuntu --key-file=node.pem -b
==================================================================
VARS 		- DONE
Templates
vars in playbook - inter*
vars in file used in playbook - no inter*
Handlers
---
- name: Update web servers
hosts: web
vars:
myname: "Rajesh Kumar"
tasks:
- name: Install Apache in centos7
ansible.builtin.apt:
name: apache2
state: latest
- name: Copy index.html
ansible.builtin.copy:
src: index.html
dest: /var/www/html/index.html
- name: Template index.html
template:
src: index.html.j2
dest: /var/www/html/index-template.html
- name: Starting a Apache Server
ansible.builtin.service:
name: apache2
state: started
Handlers
---
- name: Update web servers
hosts: web
vars:
myname: "Rajesh Kumar"
httpport: 8090
tasks:
- name: Install Apache in ubuntu
ansible.builtin.apt:
name: apache2
state: latest
- name: Copy index.html
ansible.builtin.copy:
src: index.html
dest: /var/www/html/index.html
- name: Starting a Apache Server
ansible.builtin.service:
name: apache2
state: started
- name: Template for httpd.conf
template:
src: ports.conf.j2
dest: /etc/apache2/ports.conf
notify:
- ReStarting a Apache Server
handlers:
- name: ReStarting a Apache Server
ansible.builtin.service:
name: apache2
state: restarted
===========================================================================================================
ROLE
==============================================================
a dir sructure
-------------------------
for managing following
- tasks
- vars
- template
- file
- handlers
site.yaml
---
- name: Update web servers
hosts: web
roles:
- web
Code language: JavaScript (javascript)
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x