Skip to content

lesson-01

Forward

Thank you for taking the time to read through this interactive document; this being the first of 3 parts.

I hope these hands-on, interactive lessons can reduce the startup cost of learning and eventually mastering Ansible.

The Web Terminal

If you want to take advantage of the interactive, hands-on nature of these labs, you'll need to either already have a web terminal connection available or fire one up yourself.

Instructions for that can be found here.

Lesson 01

Here's what I will cover for Lab 1 of this Ansible tutorial series:

  • What is ansible?
  • How to install Ansible on Windows/Linux/MacOS
  • How to prepare a test environment for Ansible using Docker

Let's begin.

What is Ansible?

Ansible is a simple yet powerful tool for configuration management and orchestration of your infrastructure.

It speeds up installing software, configuring servers, and most importantly reduces manual, error-prone methods for managing modern infrastructure components.

It is also a great alternative to Puppet and Chef.

Both are similar tools to Ansible, but in my opinion Ansible is much easier to learn and master.

In a nutshell, Ansible:

  • Is like a higher-level, idempotent version of traditional shell scripts
  • Is much, much easier to rapidly develop and manage, since its automation is (mostly) defined using yaml
  • Lends itself to self-documenting development

Terminology

Throughout the sections ahead, I'll make reference to the following ansible terms:

  • inventory - This is how ansible is made aware of the machines it is to manage
  • playbooks - This is the ansible version of a bash script
  • tasks - Think of this as you would a neatly commented step in a bash script, only far more superior in structure and clarity
  • variables - Just like bash variables, ansible stores repeatable information in these named constructs
  • facts - Very similar to variables, but think more of these as values that
    are automatically derived from a machine
    or from a little bit of ansible magic

For more information on ansible terms, consult the Ansible Glossary

Let's go over installing Ansible

Installing Ansible

Debian Systems

Installation on Ubuntu 20.04 LTS:

sudo apt-get update
sudo apt-get install -y curl software-properties-common || sudo apt-get install -y python-software-properties
sudo apt-get -y autoremove
sudo apt-get install -y --allow-unauthenticated python-setuptools python-dev libffi-dev libssl-dev git sshpass tree
sudo apt-get -y install python-pip
sudo pip install ansible cryptography

RHEL Systems

Installation on CentOS 8.x, Oracle Enterprise Linux 8.x

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
yum install -y ansible

In the next sections, we'll cover writing and launching ansible playbooks.

My editor of choice is Sublime 3 Text Editor, but we'll be using vi throughout this lab.

Writing ansible playbooks

The fun starts when you learn your way around ansible playbooks!

Let's create some of these, as Follows:

  • Create a folder for your playbook:

    mkdir -p sandbox

  • Create a playbook under this path named hello.yaml

    touch sandbox/hello.yaml

  • Add the playbook definition with a single debug task:

  echo -e """
  - hosts: localhost
    connection: local
    tasks:
      - name: debug | Say Hello!
        debug:
          msg: |
            Hello from the imported playbook!
  """ >> sandbox/hello.yaml 
  
  • Run the playbook, specifying your inventory as 'localhost':

    ansible-playbook -i localhost, sandbox/hello.yaml

This concludes lab1.

In lesson-02, we'll be converting a complicated bash shell script into an Ansible Playbook.

Lesson-02 will cover:

  • Playbooks and Tasks
  • Templates and Handlers
  • Variables & Facts
  • Task Blocks