Top Banner
ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHATS NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ CSPI GmbH oleg.fi[email protected] | oleg@fiksel.info FrOSCon 2016
158

Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

Aug 19, 2018

Download

Documents

lydang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

Ansible Advanced

Oleg Fiksel

Security Consultant @ CSPI GmbH

[email protected] | [email protected]

FrOSCon 2016

Page 2: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AGENDA

ABOUT

INTRODUCTION

PLAYBOOKS IN DEEP

WHAT’S NEW

Amazon AWS

Upcoming topics

END

Q & A

Page 3: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ABOUT ME

I Security Consultant @ CSPI 1 (former MODCOMP 2)I Main topics

I AutomationI VirtualisationI Application Switching (load balancing)I Perl Coding

1About CSPi2Wikipedia: MODCOMP

Page 4: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 5: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 6: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 7: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examples

I Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 8: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 9: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)

I Discuss new topics ansible is approaching

Page 10: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GOALS OF THIS TALK

I This is not a comparison of configuration managementsystems.

I Provide overview of some (not all) advanced features ofansible.

I Using examplesI Provide links for possible deep dive on a particular subject

I Talk about new features in ansible 2.0 (and ansible 2.2)I Discuss new topics ansible is approaching

Page 11: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I Fresh

I Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 12: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I Fresh

I Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 13: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012

I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 14: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 15: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntax

I Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 16: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 17: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systems

I Works via jumphostsI Works on stripped down / hardened systems

Page 18: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphosts

I Works on stripped down / hardened systems

Page 19: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHY ANSIBLE?

I FreshI Started February 2012I Core rewrite January 2016

I Simple syntaxI Bloody Enterprise compatible

I Works with no agents on the systemsI Works via jumphostsI Works on stripped down / hardened systems

Page 20: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOK BEST PRACTICESSource: http://docs.ansible.com/ansible/playbooks_best_practices.html#directory-layout

1 s tage # i n v e n t o r y f i l e f o r s t a g e env i ronment2 production # i n v e n t o r y f i l e f o r p r o d u c t i o n env i ronment34 group_vars/5 group1 # a s s i g n v a r i a b l e s t o p a r t i c u l a r s e r v e r groups6 host_vars/7 hostname1 # s y s t e m s s p e c i f i c v a r i a b l e s89 s i t e . yml # m as t e r p l a y b o o k

10 webservers . yml # p l a y b o o k f o r w e b s e r v e r t i e r1112 r o l e s /13 common/ # t h i s h i e r a r c h y r e p r e s e n t s a " r o l e "14 t a s k s/ #15 main . yml # <−− t a s k s f i l e can i n c l u d e s m a l l e r f i l e s i f warrant ed16 handlers/ #17 main . yml # <−− h a n d l e r s f i l e18 templates/ # <−− f i l e s f o r use with t h e t e m p l a t e r e s o u r c e19 ntp . conf . j 2 # <−−−−−−− t e m p l a t e s end in . j 220 f i l e s / #21 foo . sh # <−− s c r i p t f i l e s f o r use with t h e s c r i p t r e s o u r c e22 vars/ #23 main . yml # <−− v a r i a b l e s a s s o c i a t e d with t h i s r o l e24 d e f a u l t s / #25 main . yml # <−− d e f a u l t l o w e r p r i o r i t y v a r i a b l e s f o r t h i s r o l e26 meta/ #27 main . yml # <−− r o l e d e p e n d e n c i e s2829 monitoring/ # same k ind o f s t r u c t u r e a s "common" r o l e

Page 21: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTS

Most work in ansible is handled by modules 1.

I connection modules

I connect to machines

I lookup modules

I give data

I filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 22: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modules

I connect to machines

I lookup modules

I give data

I filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 23: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modules

I connect to machinesI lookup modules

I give data

I filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 24: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modules

I give data

I filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 25: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modules

I give dataI filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 26: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modules

I transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 27: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modules

I transform dataI callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 28: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modules

I register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 29: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modules

I register events that happen when tasks are executedI task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 30: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 31: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modules

I self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 32: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained script

I any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 33: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained scriptI any programming language (core modules - python only)

I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 34: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained scriptI any programming language (core modules - python only)I do the heavy lifting

I copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 35: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machine

I executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 36: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) input

I (json) output is registered

1Ansible - Developing Plugins

Page 37: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

MODULE INSIGHTSMost work in ansible is handled by modules 1.

I connection modulesI connect to machines

I lookup modulesI give data

I filter modulesI transform data

I callback modulesI register events that happen when tasks are executed

I task modulesI self contained scriptI any programming language (core modules - python only)I do the heavy liftingI copied to the target machineI executed with (json) inputI (json) output is registered

1Ansible - Developing Plugins

Page 38: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOKS IN DEEP

Page 39: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TAGS

1 # main.yml2 ---3 − hosts : webservers4 g a t h e r _ f a c t s : f a l s e5 t a s k s :6 - package:7 name: "lighttpd"8 s t a t e : i n s t a l l e d9 tags :

10 - packages11 - template:12 s r c : "template/lighttpd.j2"13 dest : "/etc/lighttpd/lighttpd.conf"14 tags :15 - c o n f i g u r a t i o n

Run:ans ib le−playbook main . yml −−tags packages

ans ib le−playbook main . yml −−skip−tags c o n f i g u r a t i o n

1More details: Ansible - Playbook Tags

Page 40: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TAGS1 # main.yml2 ---3 − hosts : webservers4 g a t h e r _ f a c t s : f a l s e5 t a s k s :6 - package:7 name: "lighttpd"8 s t a t e : i n s t a l l e d9 tags :

10 - packages11 - template:12 s r c : "template/lighttpd.j2"13 dest : "/etc/lighttpd/lighttpd.conf"14 tags :15 - c o n f i g u r a t i o n

Run:ans ib le−playbook main . yml −−tags packages

ans ib le−playbook main . yml −−skip−tags c o n f i g u r a t i o n

1More details: Ansible - Playbook Tags

Page 41: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TAGS1 # main.yml2 ---3 − hosts : webservers4 g a t h e r _ f a c t s : f a l s e5 t a s k s :6 - package:7 name: "lighttpd"8 s t a t e : i n s t a l l e d9 tags :

10 - packages11 - template:12 s r c : "template/lighttpd.j2"13 dest : "/etc/lighttpd/lighttpd.conf"14 tags :15 - c o n f i g u r a t i o n

Run:ans ib le−playbook main . yml −−tags packages

ans ib le−playbook main . yml −−skip−tags c o n f i g u r a t i o n

1More details: Ansible - Playbook Tags

Page 42: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

CUSTOM ACTIONS

1 ---2 − inc lude_vars : "includes/{{ ansible_os_family }}.yml"3 − name: "remove the apache package"4 a c t i o n : "{{custom_package_mgr}} name={{apache}} state=absent"

Page 43: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

CUSTOM ACTIONS

1 ---2 − inc lude_vars : "includes/{{ ansible_os_family }}.yml"3 − name: "remove the apache package"4 a c t i o n : "{{custom_package_mgr}} name={{apache}} state=absent"

Page 44: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INTERACTION

Page 45: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMMANDLINE/FILE

ans ib le−playbook −e ’ apache_hostname=example . com ’ deploy . yml

ans ib le−playbook −−extra−vars " @vars . j son " deploy . yml

1 # v a r s . j s o n2 { " apache_hostname " : " example . com" }

Page 46: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMMANDLINE/FILE

ans ib le−playbook −e ’ apache_hostname=example . com ’ deploy . yml

ans ib le−playbook −−extra−vars " @vars . j son " deploy . yml

1 # v a r s . j s o n2 { " apache_hostname " : " example . com" }

Page 47: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PROMPTS AND PAUSE

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 vars_prompt:5 - name: "name"6 prompt: "What is your name?"7 p r i v a t e : no8 - name: "location"9 prompt: "What is you location?"

10 p r i v a t e : no11 t a s k s :12 - debug:13 msg: "{{name}}, let me think for a moment..."14 - pause:15 seconds: 1016 - debug:17 msg: "Let me guess, you are now at {{location}}?"

1Ansible - Playbook Prompts2Ansible - Pause Module

Page 48: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PROMPTS AND PAUSE

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 vars_prompt:5 - name: "name"6 prompt: "What is your name?"7 p r i v a t e : no8 - name: "location"9 prompt: "What is you location?"

10 p r i v a t e : no11 t a s k s :12 - debug:13 msg: "{{name}}, let me think for a moment..."14 - pause:15 seconds: 1016 - debug:17 msg: "Let me guess, you are now at {{location}}?"

1Ansible - Playbook Prompts2Ansible - Pause Module

Page 49: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOK AS AN EXECUTABLE

Use Shebang to run ansible as an executable.

1 #!/usr/bin/ansible-playbook2 ---3 − hosts : a l l4 g a t h e r _ f a c t s : f a l s e5 # sudo: true6 v a r s _ f i l e s :7 - departed_users . yml8 t a s k s :9 - name: Delete departed users and a l l i t ’s files

10 user: name= { { item } } s t a t e =absent remove=yes11 with_items: "{{departed}}"

1 # departed_users.yml2 ---3 − departed: ["toor" , "admin" ]

./ dele te_depar ted_users . yml −i . . / inventory −l host1

1Example from: Ansible Webinar - Tips and Tricks by Brian Coca

Page 50: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOK AS AN EXECUTABLE

Use Shebang to run ansible as an executable.

1 #!/usr/bin/ansible-playbook2 ---3 − hosts : a l l4 g a t h e r _ f a c t s : f a l s e5 # sudo: true6 v a r s _ f i l e s :7 - departed_users . yml8 t a s k s :9 - name: Delete departed users and a l l i t ’s files

10 user: name= { { item } } s t a t e =absent remove=yes11 with_items: "{{departed}}"

1 # departed_users.yml2 ---3 − departed: ["toor" , "admin" ]

./ dele te_depar ted_users . yml −i . . / inventory −l host1

1Example from: Ansible Webinar - Tips and Tricks by Brian Coca

Page 51: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOK AS AN EXECUTABLE

Use Shebang to run ansible as an executable.

1 #!/usr/bin/ansible-playbook2 ---3 − hosts : a l l4 g a t h e r _ f a c t s : f a l s e5 # sudo: true6 v a r s _ f i l e s :7 - departed_users . yml8 t a s k s :9 - name: Delete departed users and a l l i t ’s files

10 user: name= { { item } } s t a t e =absent remove=yes11 with_items: "{{departed}}"

1 # departed_users.yml2 ---3 − departed: ["toor" , "admin" ]

./ dele te_depar ted_users . yml −i . . / inventory −l host1

1Example from: Ansible Webinar - Tips and Tricks by Brian Coca

Page 52: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

PLAYBOOK AS AN EXECUTABLE

Use Shebang to run ansible as an executable.

1 #!/usr/bin/ansible-playbook2 ---3 − hosts : a l l4 g a t h e r _ f a c t s : f a l s e5 # sudo: true6 v a r s _ f i l e s :7 - departed_users . yml8 t a s k s :9 - name: Delete departed users and a l l i t ’s files

10 user: name= { { item } } s t a t e =absent remove=yes11 with_items: "{{departed}}"

1 # departed_users.yml2 ---3 − departed: ["toor" , "admin" ]

./ dele te_depar ted_users . yml −i . . / inventory −l host1

1Example from: Ansible Webinar - Tips and Tricks by Brian Coca

Page 53: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DELEGATION

1 ---2 − name: shush nagios before deployment3 nagios:4 a c t i o n : s i l e n c e5 host : "{{inventory_hostname}}"6 d el eg a t e _ t o : "{{nagios_host}}"7

8 . . . deployment9

10 − name: unshush nagios a f t e r deployment11 nagios:12 a c t i o n : uns i l ence13 host : "{{inventory_hostname}}"14 d el eg a t e _ t o : "{{nagios_host}}"

Page 54: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DELEGATION

1 ---2 − name: shush nagios before deployment3 nagios:4 a c t i o n : s i l e n c e5 host : "{{inventory_hostname}}"6 d el eg a t e _ t o : "{{nagios_host}}"7

8 . . . deployment9

10 − name: unshush nagios a f t e r deployment11 nagios:12 a c t i o n : uns i l ence13 host : "{{inventory_hostname}}"14 d el eg a t e _ t o : "{{nagios_host}}"

Page 55: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS

Page 56: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 1/4

Lookups are executed on ansible controller.

Probably most well known lookup is:1 ---2 − name: add ssh key3 authorized_key:4 user: root5 key: "{{ lookup(’file’, ’~/.ssh/id_rsa.pub’) }}"

Page 57: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 1/4

Lookups are executed on ansible controller.Probably most well known lookup is:

1 ---2 − name: add ssh key3 authorized_key:4 user: root5 key: "{{ lookup(’file’, ’~/.ssh/id_rsa.pub’) }}"

Page 58: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 2/4

You can use lookups for other weird things too:

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 t a s k s :5 - name: random number ( using lookup )6 debug:7 msg: "Random number {{ lookup(’pipe’, ’perl -e "p r i n t i n t (

rand ( 1 0 0 ) )"’) }}"

Page 59: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 2/4

You can use lookups for other weird things too:1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 t a s k s :5 - name: random number ( using lookup )6 debug:7 msg: "Random number {{ lookup(’pipe’, ’perl -e "p r i n t i n t (

rand ( 1 0 0 ) )"’) }}"

Page 60: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 3/4

Or just use build-in function:

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 t a s k s :5 - name: a n s i b l e nat ive random number6 debug:7 msg: "{{100 | random}}"

Page 61: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 3/4

Or just use build-in function:1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 t a s k s :5 - name: a n s i b l e nat ive random number6 debug:7 msg: "{{100 | random}}"

Page 62: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

LOOKUPS 4/4

Lookups list (incomplete):I pipeI redis_kvI templateI etcdI dig (DNS)I csvfileI iniI . . .

Page 63: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

FILTERS

Filters manipulate data and are executed on the ansiblecontroller.

More information:I http://docs.ansible.com/ansible/playbooks_filters.html

I http://jinja.pocoo.org/docs/dev/templates/#builtin-filters

Page 64: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

FILTERS

Filters manipulate data and are executed on the ansiblecontroller.

More information:I http://docs.ansible.com/ansible/playbooks_filters.html

I http://jinja.pocoo.org/docs/dev/templates/#builtin-filters

Page 65: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXAMPLE 1

Not all filters are dependency-free.IP address validation needs python-netaddr.

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : no4 t a s k s :5 - debug: msg= { { ip | ipv4 } }

Page 66: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXAMPLE 2

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 t a s k s :5 - debug:6 msg: "{{ ’ansible’ | regex_replace(’^a.*i(.*)$’, ’a\\1’) }}"

Produces: “able”

Page 67: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

VARIABLE VALIDATION

1 ---2 − hosts : a l l3 g a t h e r _ f a c t s : no4 t a s k s :5 - debug: msg= { { hostname | mandatory } }6 - debug: msg= { { ip | mandatory } }7 . . .

Page 68: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

VARIABLE VALIDATION

1 ---2 − hosts : a l l3 g a t h e r _ f a c t s : no4 t a s k s :5 - debug: msg= { { hostname | mandatory } }6 - debug: msg= { { ip | mandatory } }7 . . .

Page 69: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INCLUDES AND ROLES

Page 70: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INCLUDES

1 ---2 − s e r v e r s : a l l3 t a s k s :4 - inc lude: set_mysql_password . yml mysql_user=root mysql_pass

= { { var_mysql_pass } }5 . . .

Page 71: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INCLUDES

1 ---2 − s e r v e r s : a l l3 t a s k s :4 - inc lude: set_mysql_password . yml mysql_user=root mysql_pass

= { { var_mysql_pass } }5 . . .

Page 72: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ROLES

1 # sample r o l e s t r u c t u r e2 r o l e s /3 common/4 f i l e s /5 templates/6 t a s k s /7 handlers/8 vars/9 d e f a u l t s /

10 meta/

Page 73: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ROLES

1 # sample r o l e s t r u c t u r e2 r o l e s /3 common/4 f i l e s /5 templates/6 t a s k s /7 handlers/8 vars/9 d e f a u l t s /

10 meta/

Page 74: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INCLUDES V.S. ROLES

When use includes and when roles?

I includes for small code pieces

I if you have files/templates/handlers - use roles

Page 75: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

INCLUDES V.S. ROLES

When use includes and when roles?

I includes for small code pieces

I if you have files/templates/handlers - use roles

Page 76: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

VERBOSITY AND ERROR HANDLING

Page 77: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

IGNORE_ERRORS

Continue running the task disregarding an error.1 ---2 − name: mysql root password3 mysql_user: name=root password = { { db_root_password } }4 i g n o r e _ e r r o r s : t rue

Page 78: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ASSERT

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 vars_prompt:5 - name: "name"6 prompt: "What is your name?"7 # show input contents8 p r i v a t e : no9 t a s k s :

10 - name: Very secure user v a l i d a t i o n11 a s s e r t :12 t h a t : "name == ’Oleg’"

Page 79: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

FAIL

1 ---2 − hosts : l o c a l h o s t3 g a t h e r _ f a c t s : f a l s e4 vars_prompt:5 - name: "name"6 prompt: "What is your name?"7 # show input contents8 p r i v a t e : no9 t a s k s :

10 - name: Very secure user v a l i d a t i o n11 f a i l :12 msg: "You are not allowed to run this playbook, {{name}}!"13 when: "name != ’Oleg’"

Page 80: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 81: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task Blocks

I Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 82: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 83: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 84: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 85: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic Includes

I Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 86: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

WHAT’S NEW IN ANSIBLE 2.0

I Task BlocksI Playbook parsing and Error Reporting improvements

I Syntax error shows the exact place in a playbook and givessugestions

I No more escaping of escapings needed (\\\\)

I Dynamic IncludesI Execution Strategy Plugins

1Details: Ansible 2.0 Release Notes

Page 87: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TASK BLOCKS - BASIC EXAMPLE

1 t a s k s :2 - block:3 - debug: msg=’i execute normally’4 - command: /bin/ f a l s e5 - debug: msg=’i never execute, cause ERROR!’6 rescue:7 - debug: msg=’I caught an error’8 - command: /bin/ f a l s e9 - debug: msg=’I also never execute :-(’

10 always:11 - debug: msg="this always executes"

Page 88: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TASK BLOCKS - BASIC EXAMPLE

1 t a s k s :2 - block:3 - debug: msg=’i execute normally’4 - command: /bin/ f a l s e5 - debug: msg=’i never execute, cause ERROR!’6 rescue:7 - debug: msg=’I caught an error’8 - command: /bin/ f a l s e9 - debug: msg=’I also never execute :-(’

10 always:11 - debug: msg="this always executes"

Page 89: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

TASK BLOCKS - ADVANCED EXAMPLE1 ---2 − hosts : a l l3 s e r i a l : 14 vars:5 - debug: f a l s e6 - packages: [ g i t , l i g h t t p d ]7 t a s k s :8 - block:9 - name: i n s t a l l packages

10 package: name="{{item}}" s t a t e = i n s t a l l e d11 with_items:12 - "{{packages}}"13 r e g i s t e r : packages_s ta te14 - debug: msg="{{packages_state}}"15 when: "debug == true"16 - name: copy l i g h t t p d conf ig f i l e17 template:18 s r c : "lighttpd.conf.j2"19 dest : "/etc/lighttpd/conf-enabled/00-test.conf"20 - name: r e s t a r t l i g h t t p d21 s e r v i c e : name="lighttpd" s t a t e = r e s t a r t e d22 rescue:23 - name: remove l i g h t t p conf ig f i l e24 f i l e :25 dest : "/etc/lighttpd/conf-enabled/00-test.conf"26 s t a t e : absent27 - name: remove i n s t a l l e d packages28 package: name="{{item}}" s t a t e =absent purge= t rue29 with_items:30 - "{{packages}}"31 when: "packages_state[’changed’] == true"32 - f a i l :

Page 90: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 91: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 92: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 93: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 94: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 95: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 96: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

DYNAMIC INCLUDES

I Before ansible 2.0 includes were preprocessed (once atstart-time)

I From ansible 2.0 on includes are dynamically evaluated inruntime

I The fact that your plabook from ansible < 2.0 is parsedcorrectly in ansible 2.0 doesn’t mean it will behave thesame way

I Examples:

I − inc lude: "{{ ansible_os_family }}.yml"

I − inc lude_vars : "{{ ansible_os_family }}.yml"

1Porting guide to ansible 2.0

Page 97: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES

Sice ansible 2.0 execution strategies are plugins.

Page 98: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES

Sice ansible 2.0 execution strategies are plugins.

Page 99: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES 1/3strategy: linear

(default)

host1host2

task1=1sec

task1=5sec

task2=5sec

task2=9sec

Page 100: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES 2/3strategy: linear

(default)strategy: free

host1host2 host1host2

task1=1sec

task1=5sec

task2=5sec

task2=9sec

t1=5sec

t1=5sec

task1=1sec

task2=9sec

task1=5sec

task2=5sec

Page 101: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES 3/3strategy: linear

(default)strategy: free strategy: linear

serial: 1

host1host2 host1host2 host1host2

task1=1sec

task1=5sec

task2=5sec

task2=9sec

t1=5sec

t1=5sec

task1=1sec

task2=9sec

task1=5sec

task2=5sec

task1=5sec

task2=5sec

task1=1sec

task2=9sec

Page 102: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES - PLAYBOOK 1/3

1 # F i l e s t r u c t u r e :2

3 ./ deploy_fac t s . yml4 ./ f i l e s5 ./ f i l e s /host1 . f a c t6 ./ f i l e s /host2 . f a c t7 ./ run . yml

1 # f i l e s / h o s t 1 . f a c t2 [ genera l ]3 t 1 =14 t 2 =9

1 # f i l e s / h o s t 2 . f a c t2 [ genera l ]3 t 1 =54 t 2 =5

Page 103: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES - PLAYBOOK 1/3

1 # F i l e s t r u c t u r e :2

3 ./ deploy_fac t s . yml4 ./ f i l e s5 ./ f i l e s /host1 . f a c t6 ./ f i l e s /host2 . f a c t7 ./ run . yml

1 # f i l e s / h o s t 1 . f a c t2 [ genera l ]3 t 1 =14 t 2 =9

1 # f i l e s / h o s t 2 . f a c t2 [ genera l ]3 t 1 =54 t 2 =5

Page 104: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES - PLAYBOOK 2/3

1 # deploy_facts.yml2 ---3 − hosts : a l l4 t a s k s :5 - debug:6 msg: "{{ ansible_local[’times’][’general’] }}"7 i g n o r e _ e r r o r s : True8 - f i l e :9 path: ’/etc/ansible/facts.d’

10 s t a t e : d i r e c t o r y11 - copy:12 s r c : "files/{{ inventory_hostname }}.fact"13 dest : "/etc/ansible/facts.d/times.fact"

Page 105: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXECUTION STRATEGIES - PLAYBOOK 3/3

1 # run.yml2 ---3 − hosts : a l l4 s t r a t e g y : f r e e5 # strategy: linear6 # serial: 17 t a s k s :8 - debug:9 msg: "{{ ansible_local[’times’][’general’] }}"

10 - s h e l l :11 cmd: "sleep {{ ansible_local[’times’][’general’][’t1’] }}"12 - s h e l l :13 cmd: "sleep {{ ansible_local[’times’][’general’][’t2’] }}"

Page 106: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULE

1 ---2 − package: name= g i t s t a t e =present

We all have been waiting for it!

1Details: Ansible - Package Module

Page 107: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULE

1 ---2 − package: name= g i t s t a t e =present

We all have been waiting for it!

1Details: Ansible - Package Module

Page 108: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULE

But wait a minute...Does this ease the pain of creating playbook for different

distros?

I apache package nameI CentOS/RHEL: httpdI Debian: apache2

I apache config directoryI CentOS/RHEL: /etc/httpd/conf.dI Debian: /etc/apache2/conf-enabled

How to solve?

Page 109: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULE

But wait a minute...Does this ease the pain of creating playbook for different

distros?

I apache package nameI CentOS/RHEL: httpdI Debian: apache2

I apache config directoryI CentOS/RHEL: /etc/httpd/conf.dI Debian: /etc/apache2/conf-enabled

How to solve?

Page 110: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULE

But wait a minute...Does this ease the pain of creating playbook for different

distros?

I apache package nameI CentOS/RHEL: httpdI Debian: apache2

I apache config directoryI CentOS/RHEL: /etc/httpd/conf.dI Debian: /etc/apache2/conf-enabled

How to solve?

Page 111: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULEWorking with distro-dependent variables.

1 # remove_apache.yml2 ---3 − hosts : a l l4 t a s k s :5 - inc lude_vars : "includes/{{ ansible_os_family }}.yml"6

7 - debug:8 msg: "going to remove package {{apache}}"9

10 # This uses a variable as this changes per distribution.11 - name: "remove the apache package"12 package: name= { { apache } } s t a t e =absent

1 # includes/Debian.yml2 ---3 apache: "apache2"

1 # includes/RedHat.yml2 ---3 apache: "httpd"

Page 112: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

GENERIC PACKAGE MODULEWorking with distro-dependent variables.

1 # remove_apache.yml2 ---3 − hosts : a l l4 t a s k s :5 - inc lude_vars : "includes/{{ ansible_os_family }}.yml"6

7 - debug:8 msg: "going to remove package {{apache}}"9

10 # This uses a variable as this changes per distribution.11 - name: "remove the apache package"12 package: name= { { apache } } s t a t e =absent

1 # includes/Debian.yml2 ---3 apache: "apache2"

1 # includes/RedHat.yml2 ---3 apache: "httpd"

Page 113: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

IPTABLES MODULE

1 ---2 # Block specific IP3 − i p t a b l e s :4 ip_vers ion : ipv45 chain: INPUT6 source: 8 . 8 . 8 . 87 jump: DROP8 # this must be runned as root (sudo)9 become: t rue

Page 114: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

IPTABLES MODULE

1 ---2 # Block specific IP3 − i p t a b l e s :4 ip_vers ion : ipv45 chain: INPUT6 source: 8 . 8 . 8 . 87 jump: DROP8 # this must be runned as root (sudo)9 become: t rue

Page 115: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.

I Added support for binary modules."Yeah!" to all Golang programmers.

I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 116: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.

I Added support for binary modules."Yeah!" to all Golang programmers.

I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 117: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.

I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 118: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencrypt

I cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 119: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASA

I lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 120: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASAI lxd module

I aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 121: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗

I telegramI wakeonlanI ...

1Changelog

Page 122: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegram

I wakeonlanI ...

1Changelog

Page 123: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlan

I ...

1Changelog

Page 124: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE 2.2 (CURRENT DEVELOPMENT)

Currently in development.I Added support for binary modules.

"Yeah!" to all Golang programmers.I letsencryptI cisco ASAI lxd moduleI aws_vpc_∗I telegramI wakeonlanI ...

1Changelog

Page 125: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current status

I ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experience

I Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 126: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current status

I ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experience

I Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 127: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current statusI ansible 2.0 ∼ 70 AWS modules

I For everthing else use awscli (until module will beimplemented)

I For better experience

I Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 128: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current statusI ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experience

I Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 129: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current statusI ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experience

I Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 130: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current statusI ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experienceI Use ansible = 2.0 + Boto3 (long-term Boto will go away)

I ansible 2.2 (current development) has more aws modules,see changelog 1 for details

1Changelog2List of cloud modules

Page 131: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

AMAZON AWS

I Current statusI ansible 2.0 ∼ 70 AWS modulesI For everthing else use awscli (until module will be

implemented)

I For better experienceI Use ansible = 2.0 + Boto3 (long-term Boto will go away)I ansible 2.2 (current development) has more aws modules,

see changelog 1 for details

1Changelog2List of cloud modules

Page 132: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXAMPLE

1 ---2 − name: seamless deployment3 hosts : nodes_behind_elb4 s e r i a l : 15 pre_tasks :6 - name: get ec2 f a c t s7 e c 2 _ f a c t s :8 - name: d i a c t i v a t e node in e lb9 ec2_e lb : s t a t e =absent # arguments

10 d el eg a te _ t o : l o c a l h o s t11

12 t a s k s :13 - name: deploy new software14 g i t : # arguments15

16 pos t_ tasks :17 - name: a c t i v a t e node in e lb18 ec2_e lb : s t a t e =present # arguments19 d el eg a te _ t o : l o c a l h o s t

Page 133: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

UPCOMING TOPICS

Page 134: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMPLIANCE

ansible-lockdown 1

I goal - implement STIG baselineI IMHO good ideaI current status: v0.1

1ansible-lockdown

Page 135: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMPLIANCE

ansible-lockdown 1

I goal - implement STIG baselineI IMHO good ideaI current status: v0.1

1ansible-lockdown

Page 136: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMPLIANCE

ansible-lockdown 1

I goal - implement STIG baseline

I IMHO good ideaI current status: v0.1

1ansible-lockdown

Page 137: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMPLIANCE

ansible-lockdown 1

I goal - implement STIG baselineI IMHO good idea

I current status: v0.1

1ansible-lockdown

Page 138: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

COMPLIANCE

ansible-lockdown 1

I goal - implement STIG baselineI IMHO good ideaI current status: v0.1

1ansible-lockdown

Page 139: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

NETWORK ORCHESTRATION

Support in ansible 2.0 1:I Arista EOS (cli, eapi)I Cisco NXOS (cli, nsapi)I Cisco IOS (cli)I Cisco IOSXR (cli, netconf)I Cumulus Linux (ssh)I Juniper JUNOS (cli, netconf)I OpenSwitch (ssh, cli, rest)

1Ansible - List of Network Modules

Page 140: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

NETWORK ORCHESTRATION

Support in ansible 2.0 1:I Arista EOS (cli, eapi)I Cisco NXOS (cli, nsapi)I Cisco IOS (cli)I Cisco IOSXR (cli, netconf)I Cumulus Linux (ssh)I Juniper JUNOS (cli, netconf)I OpenSwitch (ssh, cli, rest)

1Ansible - List of Network Modules

Page 141: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

EXAMPLE

1 ---2 − hosts : i o s 13 t a s k s :4 - ios_command:5 commands: show running−conf ig a l l6 provider: "{{cli}}"7 r e g i s t e r : deviceconf ig8

9 - i o s _ c o n f i g10 l i n e s :11 - d e s c r i p t i o n configured by a n s i b l e12 - ip address 1 0 . 0 . 0 . 1 2 5 5 . 2 5 5 . 2 5 5 . 013 - no shutdown14 parents : i n t e r f a c e Gigabi tEthernet0 /115 conf ig : "{{ deviceconfig.stdout[0] }}"16 provider: "{{cli}}"

1Ansible Webcast - Automating your network

Page 142: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 143: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.

I Aim is to use ansible playbooks for physical hosts, VMs aswell as containers.

I Workflow: build, flatten the image, (run), push tocontainer registry.

I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 144: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.

I Workflow: build, flatten the image, (run), push tocontainer registry.

I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 145: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.

I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 146: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 147: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.I Current status:

I Only Docker support now

I Support for other container providers will come (Rocket?)I Until now no network function support for docker

1ansible-container readme

Page 148: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.I Current status:

I Only Docker support nowI Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 149: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

ANSIBLE-CONTAINER

I For all you Docker hipsters out there.I Aim is to use ansible playbooks for physical hosts, VMs as

well as containers.I Workflow: build, flatten the image, (run), push to

container registry.I Current status:

I Only Docker support nowI Support for other container providers will come (Rocket?)

I Until now no network function support for docker

1ansible-container readme

Page 150: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 151: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 152: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 153: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 154: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 155: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 156: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

SUMMARY

I Ansible is expanding it’s work area and developingrapidly

I Play the slides after the talk and try things out

I Use the links in slides to dive deeper

I Most of standard recurring tasks can be automated usingansible

I Playbooks from the slides are available on Github 1

I ansible-doc is pretty handy for writing playbooks offline

1Playbooks from this talk

Page 157: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

Q & A

Page 158: Ansible Advanced - FrOSCon · ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END Ansible Advanced Oleg Fiksel Security Consultant @ …

ABOUT INTRODUCTION PLAYBOOKS IN DEEP WHAT’S NEW Amazon AWS Upcoming topics END

Thanks!

Oleg [email protected] | [email protected]