--------------------------------------------------------------- # # Slides : http://slides.unsupported.io/ansible-b2b-slides/ # Alex Juarez @mralexjuarez # 09:05 AM Irving Convention Center May 31, 2019 # --------------------------------------------------------------- (b2b is beginner to brilliant) 1. Why ? 2. Vocabulary Lesson 3. Environment Setup 4. Case Studies Why ===== Ansible is an agentless configuration management tool to automate configuration. It makes it easier to have consistency. Process docs rely on humans and they are not good at doing the same thing the same way over and over. Vocabulary ===== Idempotence - Idempotence means that running the same command several times produces the same result as running it only once. https://peterlyons.com/problog/2010/05/on-idempotence-intention-and-unix-commands/ Playbooks - Collection of plays Role - Collection of plays "The concept of an Ansible role is simple; it is a group of variables, tasks, files, and handlers that are stored in a standardized file structure."#s://linuxacademy.com/blog/red-hat/ansible-roles-explained/ Plays - A mapping of a task 'Playbook is a mapping between hosts and roles.' https://stackoverflow.com/questions/32101001/ansible-playbooks-vs-roles#32101316 Task - The reason for the playbook. Combined action with name and arguments Action - Module + arguments ( actual program ) Module - The work being kicked off. ex: The hostname module is kicked off on the machine to change the hostname. Handler - Special case of task that are only called when something happens Templates - Config files that can have variables in them Files - Are static files in a playbook that are consumed by ansible somehow Ansible galaxy - Repository of premade roles but they look like playbooks? Glossary -> https://docs.ansible.com/ansible/latest/reference_appendices/glossary.html Environment ====== Install Virtualbox Install Vagrant Clone or download the Ansible Examples Repo - https://github.com/mralexjuarez/ansible-b2b On Boarding Program Case ====== Setup machines break it then fix it Demo Time ===== ansible -i hosts_file -m setup localhost comm -i = inventory hosts_file is a file of hosts to target and then module is setup and localhost is the target. Is setup as an INI format the beginning of a YAML file is --- and the closing line is ... Lists are defined with - element one per line dictionary / key value are like this car: make: Nissian model: Juke color: Falu YAML Linter is http://www.yamllint.com/ Directory Structure One-Liner https://gist.github.com/mralexjuarez/c4cfae2f6f4f23af1d1b Best Practices : https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout become: true - Become root override default of false. This allows to use sudo Ansible uses SSH keys to talk Molecule is the testing suite for ansible https://molecule.readthedocs.io/en/stable/ Ansible Facts will spit out all the debug information Variables are encased in {{ var }} can use dot notation or ['array'] style CentOS doesn't like Virtualbox so cannot follow along :( Variable Precedence https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable Debug Module Variables in Precedence Files You can create a backup prior to changing a file. Templates in Ansible are Jinja2 templates or .j2 files https://www.fullstackpython.com/jinja2.html Appending a line lineinfile is a module for adding a single line at the end if you include the option insertafter you can define where to insert Playbook 4 - Conditionals and Errors ===== Default is to fail on error / non-zero output Registering a variable Is Apache running? #task name freeform - name user string #shell module to run shell command shell: "shell command" #define a local variable to get command results register: variable_name changed_when: Falsse ignore_errors: True become: True #talk is based on palybooks that are not published but are local to speaker's docs nsible Ansible has several built ins based on the ignore errors to ignore errors and then rc to get response code Tower is the 10k / year or 14k / year paid web internface AWX is the Community Edition from Red Hat Rundeck is another option awx.rackersupport.com/#/home