SlideShare a Scribd company logo
Introduction to Ansible
Omid Vahdaty, DevOps ninja
What is Ansible?
is a free-software platform for:
● configuring and managing computers
● combines multi-node software deployment
● ad hoc task execution
● configuration management
● Very good scripting management features (playbook include/ playbook roles)
● Comprehensive list of modules
Install High Level Steps
https://www.digitalocean.com/community/tutorials/how-to-install-and-
configure-ansible-on-ubuntu-14-04
1.Install ansible
2.create ssh keys to remote machines
3.Configure inventory file: /etc/ansible/hosts
4.Configure /etc/ansible/ansible.cfg
5.Test via “Ansible -m ping all”
Cmd options
● ansible -m shell -a 'free -m' host1
○ Get free mem on all machines
● ansible all -a "/bin/echo hello"
○ Print hello
● ansible all -a "/sbin/reboot" -f 10
○ (fork 10 threads.)
● ansible all -a "/usr/bin/foo" -u username
○ Change username
● ansible atlanta -a "/usr/bin/foo" -u username --become [--ask-become-pass]
CMD options
● ansible all -m copy -a "src=/etc/hosts dest=/tmp/hosts"
○ Copy file from SRC to DST
● ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"
○ Change mod, owner on remote file
● ansible webservers -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan
state=directory"
○ Create remote folder with ownership group.
● ansible webservers -m file -a "dest=/path/to/c state=absent"
○ Delete file/folder recursively
CMD managing YUM packages
● ansible all -m yum -a "name=acme state=present"
○ Install via yum acme package
● ansible all -m yum -a "name=acme state=latest"
○ Ensure latest package
● ansible webservers -m yum -a "name=acme state=absent"
○ Ensure package removed
CMD apt-get management
● http://docs.ansible.com/ansible/apt_module.html
CMD user management
● ansible all -m user -a "name=foo password=<crypted password here>"
○ Add user
● ansible all -m user -a "name=foo state=absent"
○ Remove user
CMD GIT
● ansible webservers -m git -a "repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD"
○ Get repor ?
CMD services management
● ansible webservers -m service -a "name=httpd state=started"
○ Make sure all HTTPD services are started
● ansible webservers -m service -a "name=httpd state=restarted"
○ Restart services
● ansible webservers -m service -a "name=httpd state=stopped"
○ Stop service
Facts
● ansible all -m setup
○ Get Verbose like inform (cpu, ip, users, etc.)
Optional configuration
http://docs.ansible.com/ansible/intro_configuration.html
Playbook
● Yaml Script - to automate Deployment process.
● Powerfull
● Usually kept in repository for revisions
● Each playbook is composed of one or more ‘plays’ in a list.
● Each playbook is composed of one or more ‘plays’ in a list.
● The goal of a play is to map a group of hosts to some well defined roles,
represented by things ansible calls tasks. At a basic level, a task is nothing
Playbook syntax
● Hosts: server group
● Remote_user: linux user to be used
● Tasks name : description
● Ping : module to run in this task.
● Tasks Remote_user: dedicated user per task.
---
- hosts: webservers
remote_user: root
tasks:
- name: test connection
ping:
remote_user: yourname
Playbook Examples for Users
---
- hosts: webservers
remote_user: yourname
become: yes
-----------------------
---
- hosts: webservers
remote_user: yourname
tasks:
- service: name=nginx state=started
become: yes
become_method: sudo
Playbook's users example
hosts: webservers
remote_user: yourname
become: yes
become_user: postgres
--------------------------
hosts: webservers
remote_user: yourname
become: yes
become_method: su
Playbook Tasklist
● Each playbook consists out of tasks
● From top to bottom
● If a host fails, all relevant tasks are skipped.
● Modules are ‘idempotent’, meaning if you run them again, they will make only
the changes they must in order to bring the system to the desired state
● The command and shell modules will typically rerun the same command
again
● creates flag available which can be used to make the above modules also
idempotent.
Playbook tasks
tasks:
- name: run this command and ignore the result
shell: /usr/bin/somecommand
ignore_errors: True
● Notice the line break.
tasks:
- name: Copy ansible inventory file to client
copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts
owner=root group=root mode=0644
Playbook Handlers (==event triggers)
● These ‘notify’ actions are triggered at the end of each block of tasks in a playbook, and will only be triggered once
even if notified by multiple different tasks.
● Handlers are lists of tasks, not really any different from regular tasks, that are referenced by a globally unique name.
Handlers are what notifiers notify. If nothing notifies a handler, it will not run. Regardless of how many things notify a
handler, it will run only once, after all of the tasks complete in a particular play.
● - name: template configuration file
template: src=template.j2 dest=/etc/foo.conf
notify:
- restart memcached
- restart apache
● handlers:
- name: restart memcached
service: name=memcached state=restarted
- name: restart apache
service: name=apache state=restarted
Ansible pull
● Should you want to invert the architecture of Ansible, so that nodes check in to a central location, instead of pushing
configuration out to them, you can.
● ansible-pull --help
● Good example for ansible pull:
● https://github.com/ansible/ansible-
examples/blob/master/language_features/ansible_pull.yml
Tips and Trips
● Check which hosts are affected:
○ ansible-playbook playbook.yml --list-hosts
●
Playbook variables
tasks:
- include: wordpress.yml
vars:
wp_user: timmy
ssh_keys:
- keys/one.txt
- keys/two.txt
-----------------
● Reference a variable using :
○ {{ wp_user }}
Include Playbooks (==object oriented)
# possibly saved as tasks/foo.yml
- name: placeholder foo
command: /bin/foo
- name: placeholder bar
command: /bin/bar
tasks:
- include: tasks/foo.yml
Playbook Roles
● A smarter way to manage includes:
● If the play still has a ‘tasks’ section, those tasks are executed after roles are applied.
● site.yml
webservers.yml
fooservers.yml
roles/
common/
files/
templates/
tasks/
Handlers
● ---
- hosts: webservers
roles:
- common
- webservers
Rules of Playbooks roles
This designates the following behaviors, for each role ‘x’:
If roles/x/tasks/main.yml exists, tasks listed therein will be added to the play
If roles/x/handlers/main.yml exists, handlers listed therein will be added to the play
If roles/x/vars/main.yml exists, variables listed therein will be added to the play
If roles/x/meta/main.yml exists, any role dependencies listed therein will be added to the list of roles (1.3 and later)
Any copy, script, template or include tasks (in the role) can reference files in roles/x/{files,templates,tasks}/ (dir
depends on task) without having to path them relatively or absolutely
Playbook roles and variables
● Variables and roles condition
---
- hosts: webservers
roles:
- common
- { role: foo_app_instance, dir: '/opt/a', app_port: 5000 }
- { role: foo_app_instance, dir: '/opt/b', app_port: 5001 }
● Conditional OS install
- hosts: webservers
roles:
- { role: some_role, when: "ansible_os_family == 'RedHat'" }
Playbook roles, pretask, task, post task combied
---
- hosts: webservers
pre_tasks:
- shell: echo 'hello'
roles:
- { role: some_role }
tasks:
- shell: echo 'still busy'
post_tasks:
- shell: echo 'goodbye'
Playbook Roles dependencies
---
dependencies:
- { role: common, some_parameter: 3 }
- { role: apache, appache_port: 80 }
- { role: postgres, dbname: blarg, other_parameter: 12 }
Ansible Galaxy
Ansible Galaxy is a free site for finding, downloading, rating, and reviewing all kinds of community developed Ansible roles
and can be a great way to get a jumpstart on your automation projects.
You can sign up with social auth, and the download client ‘ansible-galaxy’ is included in Ansible 1.4.2 and later.
Read the “About” page on the Galaxy site for more information.
Strategy
● Serial: host by host.
● Free: all hosts run as fast as they can to the end in parrallel.
● Debug: ….
● More are available via plugins.
- hosts: all
strategy: free
tasks:
...
Download Example Playbooks
● https://github.com/analytically/hadoop-ansible
● http://software.danielwatrous.com/install-and-configure-a-multi-node-
hadoop-cluster-using-ansible/
● https://galaxy.ansible.com/
Advanced
● Variables: http://docs.ansible.com/ansible/playbooks_variables.html
● Conditionals: http://docs.ansible.com/ansible/playbooks_conditionals.html
● Loops: http://docs.ansible.com/ansible/playbooks_loops.html
● Blocks (logical blocks) :
http://docs.ansible.com/ansible/playbooks_blocks.html
● Best practices:
http://docs.ansible.com/ansible/playbooks_best_practices.html
Sources
● Ad hoc CMD
○ http://docs.ansible.com/ansible/intro_adhoc.html
● Playbook
○ http://docs.ansible.com/ansible/playbooks_intro.html

More Related Content

What's hot

What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
Simplilearn
 

What's hot (20)

Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
 
DevOps Meetup ansible
DevOps Meetup   ansibleDevOps Meetup   ansible
DevOps Meetup ansible
 
Configuration Management in Ansible
Configuration Management in Ansible Configuration Management in Ansible
Configuration Management in Ansible
 
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansible
 
Ansible
AnsibleAnsible
Ansible
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible
AnsibleAnsible
Ansible
 
Ansible roles done right
Ansible roles done rightAnsible roles done right
Ansible roles done right
 
Automating with Ansible
Automating with AnsibleAutomating with Ansible
Automating with Ansible
 
Ansible
AnsibleAnsible
Ansible
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
Ansible
AnsibleAnsible
Ansible
 
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
What Is Ansible? | How Ansible Works? | Ansible Tutorial For Beginners | DevO...
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Ansible tips & tricks
Ansible tips & tricksAnsible tips & tricks
Ansible tips & tricks
 
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...Hands On Introduction To Ansible Configuration Management With Ansible Comple...
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
 
Ansible intro
Ansible introAnsible intro
Ansible intro
 

Viewers also liked

Viewers also liked (10)

Ansible
AnsibleAnsible
Ansible
 
Ansible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy MykhailiutaAnsible 101, Gennadiy Mykhailiuta
Ansible 101, Gennadiy Mykhailiuta
 
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecVerifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
 
Ansible + WordPress
Ansible + WordPressAnsible + WordPress
Ansible + WordPress
 
Rundeck Open Source Workflow Automation
Rundeck Open Source Workflow AutomationRundeck Open Source Workflow Automation
Rundeck Open Source Workflow Automation
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
Network Automation with Ansible
Network Automation with AnsibleNetwork Automation with Ansible
Network Automation with Ansible
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & Ansible
 
How I got 2.5 Million views on Slideshare (by @nickdemey - Board of Innovation)
How I got 2.5 Million views on Slideshare (by @nickdemey - Board of Innovation)How I got 2.5 Million views on Slideshare (by @nickdemey - Board of Innovation)
How I got 2.5 Million views on Slideshare (by @nickdemey - Board of Innovation)
 
10 Powerful Body Language Tips for your next Presentation
10 Powerful Body Language Tips for your next Presentation10 Powerful Body Language Tips for your next Presentation
10 Powerful Body Language Tips for your next Presentation
 

Similar to Introduction to ansible

Similar to Introduction to ansible (20)

Introduction to Ansible - (dev ops for people who hate devops)
Introduction to Ansible - (dev ops for people who hate devops)Introduction to Ansible - (dev ops for people who hate devops)
Introduction to Ansible - (dev ops for people who hate devops)
 
#OktoCampus - Workshop : An introduction to Ansible
#OktoCampus - Workshop : An introduction to Ansible#OktoCampus - Workshop : An introduction to Ansible
#OktoCampus - Workshop : An introduction to Ansible
 
Introduction to Ansible - Peter Halligan
Introduction to Ansible - Peter HalliganIntroduction to Ansible - Peter Halligan
Introduction to Ansible - Peter Halligan
 
Installing AtoM with Ansible
Installing AtoM with AnsibleInstalling AtoM with Ansible
Installing AtoM with Ansible
 
Automating with ansible (Part A)
Automating with ansible (Part A)Automating with ansible (Part A)
Automating with ansible (Part A)
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestration
 
A tour of Ansible
A tour of AnsibleA tour of Ansible
A tour of Ansible
 
Automating with ansible (part a)
Automating with ansible (part a)Automating with ansible (part a)
Automating with ansible (part a)
 
Ansible not only for Dummies
Ansible not only for DummiesAnsible not only for Dummies
Ansible not only for Dummies
 
DevOpsDaysCPT Ansible Infrastrucutre as Code 2017
DevOpsDaysCPT Ansible Infrastrucutre as Code 2017DevOpsDaysCPT Ansible Infrastrucutre as Code 2017
DevOpsDaysCPT Ansible Infrastrucutre as Code 2017
 
Ansible for Beginners
Ansible for BeginnersAnsible for Beginners
Ansible for Beginners
 
Getting Started with Ansible - Jake.pdf
Getting Started with Ansible - Jake.pdfGetting Started with Ansible - Jake.pdf
Getting Started with Ansible - Jake.pdf
 
Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)
 
PLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł RozlachPLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł Rozlach
 
PLNOG Automation@Brainly
PLNOG Automation@BrainlyPLNOG Automation@Brainly
PLNOG Automation@Brainly
 
Basics of Ansible - Sahil Davawala
Basics of Ansible - Sahil DavawalaBasics of Ansible - Sahil Davawala
Basics of Ansible - Sahil Davawala
 
Ansible with oci
Ansible with ociAnsible with oci
Ansible with oci
 
MariaDB, MySQL and Ansible: automating database infrastructures
MariaDB, MySQL and Ansible: automating database infrastructuresMariaDB, MySQL and Ansible: automating database infrastructures
MariaDB, MySQL and Ansible: automating database infrastructures
 
Ansible & Salt - Vincent Boon
Ansible & Salt - Vincent BoonAnsible & Salt - Vincent Boon
Ansible & Salt - Vincent Boon
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 

More from Omid Vahdaty

Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Omid Vahdaty
 
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
Omid Vahdaty
 

More from Omid Vahdaty (20)

Data Pipline Observability meetup
Data Pipline Observability meetup Data Pipline Observability meetup
Data Pipline Observability meetup
 
Couchbase Data Platform | Big Data Demystified
Couchbase Data Platform | Big Data DemystifiedCouchbase Data Platform | Big Data Demystified
Couchbase Data Platform | Big Data Demystified
 
Machine Learning Essentials Demystified part2 | Big Data Demystified
Machine Learning Essentials Demystified part2 | Big Data DemystifiedMachine Learning Essentials Demystified part2 | Big Data Demystified
Machine Learning Essentials Demystified part2 | Big Data Demystified
 
Machine Learning Essentials Demystified part1 | Big Data Demystified
Machine Learning Essentials Demystified part1 | Big Data DemystifiedMachine Learning Essentials Demystified part1 | Big Data Demystified
Machine Learning Essentials Demystified part1 | Big Data Demystified
 
The technology of fake news between a new front and a new frontier | Big Dat...
The technology of fake news  between a new front and a new frontier | Big Dat...The technology of fake news  between a new front and a new frontier | Big Dat...
The technology of fake news between a new front and a new frontier | Big Dat...
 
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3
 
Making your analytics talk business | Big Data Demystified
Making your analytics talk business | Big Data DemystifiedMaking your analytics talk business | Big Data Demystified
Making your analytics talk business | Big Data Demystified
 
BI STRATEGY FROM A BIRD'S EYE VIEW (How to become a trusted advisor) | Omri H...
BI STRATEGY FROM A BIRD'S EYE VIEW (How to become a trusted advisor) | Omri H...BI STRATEGY FROM A BIRD'S EYE VIEW (How to become a trusted advisor) | Omri H...
BI STRATEGY FROM A BIRD'S EYE VIEW (How to become a trusted advisor) | Omri H...
 
AI and Big Data in Health Sector Opportunities and challenges | Big Data Demy...
AI and Big Data in Health Sector Opportunities and challenges | Big Data Demy...AI and Big Data in Health Sector Opportunities and challenges | Big Data Demy...
AI and Big Data in Health Sector Opportunities and challenges | Big Data Demy...
 
Aerospike meetup july 2019 | Big Data Demystified
Aerospike meetup july 2019 | Big Data DemystifiedAerospike meetup july 2019 | Big Data Demystified
Aerospike meetup july 2019 | Big Data Demystified
 
ALIGNING YOUR BI OPERATIONS WITH YOUR CUSTOMERS' UNSPOKEN NEEDS, by Eyal Stei...
ALIGNING YOUR BI OPERATIONS WITH YOUR CUSTOMERS' UNSPOKEN NEEDS, by Eyal Stei...ALIGNING YOUR BI OPERATIONS WITH YOUR CUSTOMERS' UNSPOKEN NEEDS, by Eyal Stei...
ALIGNING YOUR BI OPERATIONS WITH YOUR CUSTOMERS' UNSPOKEN NEEDS, by Eyal Stei...
 
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
AWS Big Data Demystified #1.2 | Big Data architecture lessons learned
 
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | EnglishAWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | English
 
AWS Big Data Demystified #4 data governance demystified [security, networ...
AWS Big Data Demystified #4   data governance demystified   [security, networ...AWS Big Data Demystified #4   data governance demystified   [security, networ...
AWS Big Data Demystified #4 data governance demystified [security, networ...
 
AWS Big Data Demystified #3 | Zeppelin + spark sql, jdbc + thrift, ganglia, r...
AWS Big Data Demystified #3 | Zeppelin + spark sql, jdbc + thrift, ganglia, r...AWS Big Data Demystified #3 | Zeppelin + spark sql, jdbc + thrift, ganglia, r...
AWS Big Data Demystified #3 | Zeppelin + spark sql, jdbc + thrift, ganglia, r...
 
AWS Big Data Demystified #2 | Athena, Spectrum, Emr, Hive
AWS Big Data Demystified #2 |  Athena, Spectrum, Emr, Hive AWS Big Data Demystified #2 |  Athena, Spectrum, Emr, Hive
AWS Big Data Demystified #2 | Athena, Spectrum, Emr, Hive
 
Amazon aws big data demystified | Introduction to streaming and messaging flu...
Amazon aws big data demystified | Introduction to streaming and messaging flu...Amazon aws big data demystified | Introduction to streaming and messaging flu...
Amazon aws big data demystified | Introduction to streaming and messaging flu...
 
AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned
 
Emr spark tuning demystified
Emr spark tuning demystifiedEmr spark tuning demystified
Emr spark tuning demystified
 
Emr zeppelin & Livy demystified
Emr zeppelin & Livy demystifiedEmr zeppelin & Livy demystified
Emr zeppelin & Livy demystified
 

Recently uploaded

Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdf
Kamal Acharya
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
Kamal Acharya
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
AbrahamGadissa
 

Recently uploaded (20)

Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
 
Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdf
 
2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
 
Electrostatic field in a coaxial transmission line
Electrostatic field in a coaxial transmission lineElectrostatic field in a coaxial transmission line
Electrostatic field in a coaxial transmission line
 
A case study of cinema management system project report..pdf
A case study of cinema management system project report..pdfA case study of cinema management system project report..pdf
A case study of cinema management system project report..pdf
 
Courier management system project report.pdf
Courier management system project report.pdfCourier management system project report.pdf
Courier management system project report.pdf
 
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
NO1 Pandit Black Magic Removal in Uk kala jadu Specialist kala jadu for Love ...
 
Natalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in KrakówNatalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in Kraków
 
Scaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltageScaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltage
 
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxCloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
 
retail automation billing system ppt.pptx
retail automation billing system ppt.pptxretail automation billing system ppt.pptx
retail automation billing system ppt.pptx
 
Online resume builder management system project report.pdf
Online resume builder management system project report.pdfOnline resume builder management system project report.pdf
Online resume builder management system project report.pdf
 
Peek implant persentation - Copy (1).pdf
Peek implant persentation - Copy (1).pdfPeek implant persentation - Copy (1).pdf
Peek implant persentation - Copy (1).pdf
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
Furniture showroom management system project.pdf
Furniture showroom management system project.pdfFurniture showroom management system project.pdf
Furniture showroom management system project.pdf
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 

Introduction to ansible

  • 1. Introduction to Ansible Omid Vahdaty, DevOps ninja
  • 2. What is Ansible? is a free-software platform for: ● configuring and managing computers ● combines multi-node software deployment ● ad hoc task execution ● configuration management ● Very good scripting management features (playbook include/ playbook roles) ● Comprehensive list of modules
  • 3. Install High Level Steps https://www.digitalocean.com/community/tutorials/how-to-install-and- configure-ansible-on-ubuntu-14-04 1.Install ansible 2.create ssh keys to remote machines 3.Configure inventory file: /etc/ansible/hosts 4.Configure /etc/ansible/ansible.cfg 5.Test via “Ansible -m ping all”
  • 4. Cmd options ● ansible -m shell -a 'free -m' host1 ○ Get free mem on all machines ● ansible all -a "/bin/echo hello" ○ Print hello ● ansible all -a "/sbin/reboot" -f 10 ○ (fork 10 threads.) ● ansible all -a "/usr/bin/foo" -u username ○ Change username ● ansible atlanta -a "/usr/bin/foo" -u username --become [--ask-become-pass]
  • 5. CMD options ● ansible all -m copy -a "src=/etc/hosts dest=/tmp/hosts" ○ Copy file from SRC to DST ● ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan" ○ Change mod, owner on remote file ● ansible webservers -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory" ○ Create remote folder with ownership group. ● ansible webservers -m file -a "dest=/path/to/c state=absent" ○ Delete file/folder recursively
  • 6. CMD managing YUM packages ● ansible all -m yum -a "name=acme state=present" ○ Install via yum acme package ● ansible all -m yum -a "name=acme state=latest" ○ Ensure latest package ● ansible webservers -m yum -a "name=acme state=absent" ○ Ensure package removed
  • 7. CMD apt-get management ● http://docs.ansible.com/ansible/apt_module.html
  • 8. CMD user management ● ansible all -m user -a "name=foo password=<crypted password here>" ○ Add user ● ansible all -m user -a "name=foo state=absent" ○ Remove user
  • 9. CMD GIT ● ansible webservers -m git -a "repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD" ○ Get repor ?
  • 10. CMD services management ● ansible webservers -m service -a "name=httpd state=started" ○ Make sure all HTTPD services are started ● ansible webservers -m service -a "name=httpd state=restarted" ○ Restart services ● ansible webservers -m service -a "name=httpd state=stopped" ○ Stop service
  • 11. Facts ● ansible all -m setup ○ Get Verbose like inform (cpu, ip, users, etc.)
  • 13. Playbook ● Yaml Script - to automate Deployment process. ● Powerfull ● Usually kept in repository for revisions ● Each playbook is composed of one or more ‘plays’ in a list. ● Each playbook is composed of one or more ‘plays’ in a list. ● The goal of a play is to map a group of hosts to some well defined roles, represented by things ansible calls tasks. At a basic level, a task is nothing
  • 14. Playbook syntax ● Hosts: server group ● Remote_user: linux user to be used ● Tasks name : description ● Ping : module to run in this task. ● Tasks Remote_user: dedicated user per task. --- - hosts: webservers remote_user: root tasks: - name: test connection ping: remote_user: yourname
  • 15. Playbook Examples for Users --- - hosts: webservers remote_user: yourname become: yes ----------------------- --- - hosts: webservers remote_user: yourname tasks: - service: name=nginx state=started become: yes become_method: sudo
  • 16. Playbook's users example hosts: webservers remote_user: yourname become: yes become_user: postgres -------------------------- hosts: webservers remote_user: yourname become: yes become_method: su
  • 17. Playbook Tasklist ● Each playbook consists out of tasks ● From top to bottom ● If a host fails, all relevant tasks are skipped. ● Modules are ‘idempotent’, meaning if you run them again, they will make only the changes they must in order to bring the system to the desired state ● The command and shell modules will typically rerun the same command again ● creates flag available which can be used to make the above modules also idempotent.
  • 18. Playbook tasks tasks: - name: run this command and ignore the result shell: /usr/bin/somecommand ignore_errors: True ● Notice the line break. tasks: - name: Copy ansible inventory file to client copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts owner=root group=root mode=0644
  • 19. Playbook Handlers (==event triggers) ● These ‘notify’ actions are triggered at the end of each block of tasks in a playbook, and will only be triggered once even if notified by multiple different tasks. ● Handlers are lists of tasks, not really any different from regular tasks, that are referenced by a globally unique name. Handlers are what notifiers notify. If nothing notifies a handler, it will not run. Regardless of how many things notify a handler, it will run only once, after all of the tasks complete in a particular play. ● - name: template configuration file template: src=template.j2 dest=/etc/foo.conf notify: - restart memcached - restart apache ● handlers: - name: restart memcached service: name=memcached state=restarted - name: restart apache service: name=apache state=restarted
  • 20. Ansible pull ● Should you want to invert the architecture of Ansible, so that nodes check in to a central location, instead of pushing configuration out to them, you can. ● ansible-pull --help ● Good example for ansible pull: ● https://github.com/ansible/ansible- examples/blob/master/language_features/ansible_pull.yml
  • 21. Tips and Trips ● Check which hosts are affected: ○ ansible-playbook playbook.yml --list-hosts ●
  • 22. Playbook variables tasks: - include: wordpress.yml vars: wp_user: timmy ssh_keys: - keys/one.txt - keys/two.txt ----------------- ● Reference a variable using : ○ {{ wp_user }}
  • 23. Include Playbooks (==object oriented) # possibly saved as tasks/foo.yml - name: placeholder foo command: /bin/foo - name: placeholder bar command: /bin/bar tasks: - include: tasks/foo.yml
  • 24. Playbook Roles ● A smarter way to manage includes: ● If the play still has a ‘tasks’ section, those tasks are executed after roles are applied. ● site.yml webservers.yml fooservers.yml roles/ common/ files/ templates/ tasks/ Handlers ● --- - hosts: webservers roles: - common - webservers
  • 25. Rules of Playbooks roles This designates the following behaviors, for each role ‘x’: If roles/x/tasks/main.yml exists, tasks listed therein will be added to the play If roles/x/handlers/main.yml exists, handlers listed therein will be added to the play If roles/x/vars/main.yml exists, variables listed therein will be added to the play If roles/x/meta/main.yml exists, any role dependencies listed therein will be added to the list of roles (1.3 and later) Any copy, script, template or include tasks (in the role) can reference files in roles/x/{files,templates,tasks}/ (dir depends on task) without having to path them relatively or absolutely
  • 26. Playbook roles and variables ● Variables and roles condition --- - hosts: webservers roles: - common - { role: foo_app_instance, dir: '/opt/a', app_port: 5000 } - { role: foo_app_instance, dir: '/opt/b', app_port: 5001 } ● Conditional OS install - hosts: webservers roles: - { role: some_role, when: "ansible_os_family == 'RedHat'" }
  • 27. Playbook roles, pretask, task, post task combied --- - hosts: webservers pre_tasks: - shell: echo 'hello' roles: - { role: some_role } tasks: - shell: echo 'still busy' post_tasks: - shell: echo 'goodbye'
  • 28. Playbook Roles dependencies --- dependencies: - { role: common, some_parameter: 3 } - { role: apache, appache_port: 80 } - { role: postgres, dbname: blarg, other_parameter: 12 }
  • 29. Ansible Galaxy Ansible Galaxy is a free site for finding, downloading, rating, and reviewing all kinds of community developed Ansible roles and can be a great way to get a jumpstart on your automation projects. You can sign up with social auth, and the download client ‘ansible-galaxy’ is included in Ansible 1.4.2 and later. Read the “About” page on the Galaxy site for more information.
  • 30. Strategy ● Serial: host by host. ● Free: all hosts run as fast as they can to the end in parrallel. ● Debug: …. ● More are available via plugins. - hosts: all strategy: free tasks: ...
  • 31. Download Example Playbooks ● https://github.com/analytically/hadoop-ansible ● http://software.danielwatrous.com/install-and-configure-a-multi-node- hadoop-cluster-using-ansible/ ● https://galaxy.ansible.com/
  • 32. Advanced ● Variables: http://docs.ansible.com/ansible/playbooks_variables.html ● Conditionals: http://docs.ansible.com/ansible/playbooks_conditionals.html ● Loops: http://docs.ansible.com/ansible/playbooks_loops.html ● Blocks (logical blocks) : http://docs.ansible.com/ansible/playbooks_blocks.html ● Best practices: http://docs.ansible.com/ansible/playbooks_best_practices.html
  • 33. Sources ● Ad hoc CMD ○ http://docs.ansible.com/ansible/intro_adhoc.html ● Playbook ○ http://docs.ansible.com/ansible/playbooks_intro.html