Slide 1

Slide 1 text

@KeithResar

Slide 2

Slide 2 text

@KeithResar Keith [email protected] @KeithResar

Slide 3

Slide 3 text

#!/bin/bash

Slide 4

Slide 4 text

#!/bin/bash CM

Slide 5

Slide 5 text

a simple automation language that can perfectly describe an IT application infrastructure in Ansible Playbooks. an automation engine that runs Ansible Playbooks. Ansible Tower is an enterprise framework for controlling, securing and managing your Ansible automation with a UI and restful API.

Slide 6

Slide 6 text

● 22,000+ stars & 7,100+ forks on GitHub ● 2600+ GitHub Contributors ● Over 1000 modules shipped with Ansible ● New contributors added every day ● 1400+ users on IRC channel ● Top 10 open source projects in 2014 ● World-wide meetups taking monthly ● Ansible Galaxy: over 7,000 Roles ● 250,000+ downloads a month ● AnsibleFests in NYC, SF, London

Slide 7

Slide 7 text

Human readable automation No special coding skills needed Tasks executed in order Get productive quickly App deployment Configuration management Workflow orchestration Orchestrate the app lifecycle Agentless architecture Uses OpenSSH & WinRM No agents to exploit or update More efficient & more secure @KeithResar

Slide 8

Slide 8 text

@KeithResar

Slide 9

Slide 9 text

@KeithResar From: The Boss To: Sweater Subject: Rebuild Web02! Sweater, Get Apache installed straight away on web02. Corp-web is down. Use the same config as web01. - The Boss.

Slide 10

Slide 10 text

@KeithResar Sweater, INSTALL APACHE on WEB02

Slide 11

Slide 11 text

@KeithResar > ssh web02 Sweater, INSTALL APACHE on WEB02

Slide 12

Slide 12 text

@KeithResar > ssh web02 web02> yum -y install httpd Sweater, INSTALL APACHE on WEB02

Slide 13

Slide 13 text

@KeithResar > ssh web02 web02> yum -y install httpd web02> sudo yum -y install httpd Sweater, INSTALL APACHE on WEB02

Slide 14

Slide 14 text

@KeithResar > ssh web02 web02> yum -y install httpd web02> sudo yum -y install httpd web02> # Copy configs from web01 Sweater, INSTALL APACHE on WEB02

Slide 15

Slide 15 text

@KeithResar > ssh web02 web02> yum -y install httpd web02> sudo yum -y install httpd web02> # Copy configs from web01 web02> # DONE? Sweater, INSTALL APACHE on WEB02

Slide 16

Slide 16 text

@KeithResar Ansible, INSTALL APACHE on WEB02 how what who

Slide 17

Slide 17 text

@KeithResar

Slide 18

Slide 18 text

@KeithResar

Slide 19

Slide 19 text

@KeithResar what

Slide 20

Slide 20 text

@KeithResar how

Slide 21

Slide 21 text

@KeithResar [web] webserver1.example.com webserver2.example.com [db] dbserver1.example.com who

Slide 22

Slide 22 text

@KeithResar who

Slide 23

Slide 23 text

@KeithResar

Slide 24

Slide 24 text

@KeithResar

Slide 25

Slide 25 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 26

Slide 26 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 27

Slide 27 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 28

Slide 28 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 29

Slide 29 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 30

Slide 30 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 31

Slide 31 text

@KeithResar --- - name: install and start apache hosts: all vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: install httpd yum: pkg=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf - name: start httpd service: name=httpd state=running

Slide 32

Slide 32 text

@KeithResar > ansible -m setup > ansible -m ping > ansible -m command -a ‘rm -rf /var/tmp/session’ > ansible -m copy -a ‘src=foo dest=/foo/bar’

Slide 33

Slide 33 text

@KeithResar

Slide 34

Slide 34 text

@KeithResar

Slide 35

Slide 35 text

● ● ●

Slide 36

Slide 36 text

@KeithResar roles/ common/ # This hierarchy represents a "role" tasks/ # main.yml # <-- tasks file can include smaller files handlers/ # main.yml # <-- handlers file templates/ # <-- files for use with template module httpd.conf.j2 # <-- templates end in .j2 files/ # bar.txt # <-- files for use with the copy module foo.sh # <-- script files used with script module vars/ # main.yml # <-- variables associated with this role

Slide 37

Slide 37 text

@KeithResar

Slide 38

Slide 38 text

@KeithResar CROSS PLATFORM – Linux, Windows, UNIX Agentless support for all major OS variants, physical, virtual, cloud and network HUMAN READABLE – YAML Perfectly describe and document every aspect of your application environment PERFECT DESCRIPTION OF APPLICATION Every change can be made by playbooks, ensuring everyone is on the same page VERSION CONTROLLED Playbooks are plain-text. Treat them like code in your existing version control. DYNAMIC INVENTORIES Capture all the servers 100% of the time, regardless of infrastructure, location, etc. ORCHESTRATION THAT PLAYS WELL WITH OTHERS Homogenize existing environments by leveraging current toolsets

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

@KeithResar @KeithResar