26
ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / [email protected] / fuzzygroup.github.io/blog

ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / [email protected] / fuzzygroup.github.io/blog . WHO AM I? • Software

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

ANSIBLE, ELIXIR AND YOUDevops That Doesn’t Suck

J. Scott Johnson / [email protected] / fuzzygroup.github.io/blog

Page 2: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

WHO AM I?• Software Engineer and Consultant

• Blogger

• Focus is Ruby; Moving to Elixir

• Specialize in back end work, heavy focus on database and search

• Always available for work

Page 3: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

WHAT IS ANSIBLE?

• Declarative machine provisioning tool

• Open source; owned by Redhat

• Written in python

• Runs purely via SSH

Page 4: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

ANTI CONCEPT - SNOWFLAKE SERVER

• Ansible is a reaction to “snowflake servers” - finely tuned over a period of time

• Throw Away Servers

• Never Fix a Server Again

Page 5: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

2 APPROACHES

• Ad Hoc

• Want to do anything on a group of machines

• Playbook

• Want to do the same thing on a group of machines over and over

Page 6: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

AD HOC

• ansible all -i inventories/production_more_crawlers -u ubuntu -a "df -h"

Page 7: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

PLAYBOOK

• ansible-playbook -i inventories/production playbook.yml

Page 8: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

CORE ANSIBLE CONCEPTS• Idempotency

• Playbook

• Inventory

• Role

• Task

• Variables

• Conditionals

• Files

• Templates

• Handlers

• Vault

• Galaxy

Page 9: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

IDEMPOTENCY• Do it repeatedly; get same result!

• Old hat to us - we’re functional!

• Happens at task level

• state = SOMETHING

• something varies based on module (present versus started)

• modules are generally idempotent

• get into shell stuff and you do it on your own

Page 10: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

PLAYBOOK

• What to Do

• What Order to do it in

• YAML file

Page 11: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

INVENTORY

• What machines to do something to

• plain ASCII

• can be dynamic

Page 12: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

ROLE• YAML file

• Highly structured but can only have what you need

• Describes what to do

• module based

• ideally should be idempotent

• appears in the playbook

Page 13: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

TASK

• What to do

• module based

• declarative

• name is optional / documentation

• apt: is a module

• with_items is an iterator

• service: is a module

Page 14: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software
Page 15: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

VARIABLES• Wonky

• Programming in YAML!!!

• Can exist at any level

• group_vars

• all

• production

• staging

• role

Page 16: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

CONDITIONAL

• Expressions that determine when (or when not) to do something

• Feel awkward

• Again programming in YAML!

Page 17: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

FILES / TEMPLATES

• Files are static entities copied up as part of a task

• Templates are modified as part of copy action

• Templates support variables

Page 18: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

HANDLERS

• Notification initiated tasks

• If not notified will not run at all

• Will only run once at the end of the task

• Suggestion: DO NOT USE SPACES IN THE NAME!

Page 19: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

VAULT

• Ability to Encrypt the secrets what’s in your playbook

• Be asked for password or pass in from file

• Keep security keys out of github

Page 20: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

GALAXY

• Think DockerHub for DevOps

• Treat with Caution

• Often Doesn’t Work

• Requires local installation before execution

Page 21: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

GETTING ELIXIR ON ALL YOUR MACHINES

• We want elixir on every machine we have!

• What has to happen

• Erlang

• Elixir

• Tooling

Page 22: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

APPROACH #1 MINE

• Learn what it takes to install everything for erlang, elixir, tooling

• Write a role

• Shout out to Thomas Lackemann @tlackemann who helped with this Thanks!

Page 23: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software
Page 24: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

OPTION 2: USE GALAXY

• This role worked erratically for me - sometimes yes, sometimes no

• ansible-playbook -i inventories/production_honeybadger playbook_erlang_and_elixir_via_galaxy.yml

Page 25: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

CLOSING THOUGHTS / LEARNING ADVICE

• Use vagrant to test tasks

• Not everything works on vagrant

• Learning - look for recent examples; things change rapidly

• Conditionals are weird; when expressions are hard

• If you have a lot of ec2 boxes then provision from an ec2 box onto the other ec2 boxes (faster)

• Stuff breaks from time to time

Page 26: ANSIBLE, ELIXIR AND YOU - fuzzyblog.io · ANSIBLE, ELIXIR AND YOU Devops That Doesn’t Suck J. Scott Johnson / fuzzygroup@gmail.com / fuzzygroup.github.io/blog . WHO AM I? • Software

RECOMMENDED READING

www.leanpub.com