ansible, elixir and you - fuzzyblog.io · ansible, elixir and you devops that doesn’t suck j....
TRANSCRIPT
![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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/14.jpg)
![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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/23.jpg)
![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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052800/5f0fb7317e708231d44587c0/html5/thumbnails/25.jpg)
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