0% found this document useful (0 votes)
33 views

Ansible Notes

Ansible is an open source automation tool that can provision, configure, and deploy applications on servers. It uses YAML files called playbooks to execute tasks on managed nodes. Playbooks contain plays which are modules run on target nodes. Ansible is agentless and uses SSH to connect to managed nodes.

Uploaded by

weslians2018
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

Ansible Notes

Ansible is an open source automation tool that can provision, configure, and deploy applications on servers. It uses YAML files called playbooks to execute tasks on managed nodes. Playbooks contain plays which are modules run on target nodes. Ansible is agentless and uses SSH to connect to managed nodes.

Uploaded by

weslians2018
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

Ansible

It is an open source automation software

● Simple
● Powerful
● Agentless
● Cross Platform
Uses

● Provisioning
● Configuration Management
● Application deployment
● Orchestration
MANAGED NODE

CONTROL NODE
Control Node - Device where ansible is deployed

Managed Node - Device(s) to be Managed by Ansible


Inventory - List of host or group of hosts which are managed by
ansible
Module - Piece of code written in python or powershell (or any)
to do task in managed node

https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
Play - Module to be executed in target node
PlayBook - YAML file contains one or multiple play

eg:

playbook.yaml or playbook.yml
Requirements to Install Ansible
Ansible can be installed as control node which should be a unix or linux-based OS

Python package must be installed on controller node

Verify

yum list python

python --version
Installing Ansible in RHEL
#Download EPEL Software

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

#Install EPEL with rpm installer

rpm -ivh epel-release-latest-7.noarch.rpm

#Install Ansible

yum install ansible -y


Managed Node Requirement
Linux - python 2.4 or later

sshd

Windows - powershell 3.0 or newer & .net 4.0

winrm
Method1

Connecting Linux Managed Node via Ansible

#Generate ssh key pair in ansible controller

ssh-keygen

#Copy the content of public key (~/.ssh/id_rsa.pub) to managed node’s


authorized_key file (~/.ssh/authorized_keys)
Method2

Connecting Linux Managed Node via Ansible

1. Copy the private key file provided by aws to ansible controller


2. Change Permission of private key

chmod 600 ansible.pem


Verify
ssh -i ansible.pem [email protected]

# you will be able to login as ec2-user without password to managed node


Default Inventory List
/etc/ansible/hosts
Default Ansible configuration
/etc/ansible/ansible.cfg
Creating Project Directory

vi /sansbound/ansible.cfg vi /sansbound/inventory
[defaults] server1
inventory=/sansbound/inventory server2
server3
server4

[mumbai]
server1
server2
Verify host or group of hosts from inventory
ansible rhel --list-hosts
Privilege
Ad-hoc Command
It is a single task which executes a module in the managed node(s)
Ansible Playbook
It is a YAML file contains one or multiple play
Indentation
vim ~/.vimrc

autocmd FileType yaml setlocal ai ts=2 sw=2 et


Writing a Playbook
Verify Syntax
ansible-playbook --syntax-check devops.yml
Running a playbook
ansible-playbook devops.yml
AWS Managed by Ansible
ansible.cfg file for AWS

vi ansible.cfg

[defaults]

inventory=inventory

host_key_checking=False
inventory file for AWS

vi inventory

localhost
Generate key pair and copy public key to
authorized_keys

ssh-keygen

copy content of /root/.ssh/id_rsa.pub to /root/authorized_keys(localhost)


Verify

ansible -m ping localhost


Install Softwares

#Install PIP

yum install python2-pip-8.1.2-8.el7.noarch -y

#Install BOTO

pip install boto


Simply Playbook for EC2 Instance Launch

- name: Launch EC2 Instance

ec2:

aws_access_key: XYZ

aws_secret_key: XYZ

region: ap-south-1

image: ami-007d5db58754fa284

instance_type: t2.micro

key_name: ansible
Installing docker in amazon linux using ansible
Docker Commands
docker images
docker ps
docker ps -a
docker run -d alpine
docker container stop 79
docker container stop `docker container ls -aq`
docker container rm `docker container ls -aq`
Run jenkins container
docker pull jenkins/jenkins:lts
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
docker exec <cid> cat /var/jenkins_home/secrets/initialAdminPassword
Integrate Jenkins with Ansible
#Login to Container
sudo docker exec -it <cid> /bin/bash

#create key pair in jenkins as jenkins user


ssh-keygen

#copy the public key to ansible machine


Create a jenkins job to run ansible playbook
ssh root@ansible ansible-playbook -i /sansbound/inventory --private-key
/sansbound/ansible.pem -u ec2-user -b /sansbound/deploy.yml

You might also like