CertGrid CertGrid

Ansible

Inventories, playbooks, roles and idempotence.

45 published guides

36 of 45 guides need path access. Unlock Ansible path

45-guide Ansible learning path · 45 published · about 688 min of reading · 9 learning tracks · reviewed 28 August 2026

Control Node and Managed Nodes5 guides

Install it, reach two machines, and prove the connection before writing anything.

  1. Concepts 13 min

    Ansible Architecture and Agentless Operation

    Prove there is nothing installed and nothing listening on the machines Ansible manages, and see the ssh command it builds instead.

    no agent, no daemon

    Updated 23 Aug 2026

  2. Installation 12 min

    Ansible Control Node Installation

    Install Ansible on one machine, see the seven commands it gives you, and confirm the managed nodes received nothing at all.

    apt-get install ansible

    Updated 23 Aug 2026

  3. Hands-on Lab 15 min

    Ansible Static Inventory and Host Patterns

    Write an inventory with groups and a parent group, then select hosts six different ways - including the pattern that silently matches nothing.

    ansible-inventory --graph

    Updated 23 Aug 2026

  4. Configuration 14 min

    Ansible Configuration File Precedence

    Put a different value in three places at once and have Ansible tell you which one it read.

    ansible-config dump

    Updated 23 Aug 2026

  5. Hands-on Lab 17 min

    Ansible SSH Keys and become

    Take a brand new user from 'permission denied' to running commands as root on both managed nodes, using Ansible to do it.

    authorized_key + sudoers.d

    Updated 23 Aug 2026

Ad-hoc Commands and Modules4 guides

One-off tasks, the three ways to run a command, and what idempotence actually means.

  1. Hands-on Lab 14 min

    Ansible Ad-Hoc Commands and Core Modules

    Do real work across two machines without writing a file, and find out how many hosts Ansible touches at once.

    ansible <pattern> -m <module>

    Updated 23 Aug 2026

  2. Hands-on Lab 16 min

    Ansible command, shell and raw Modules

    Find out exactly what command does and does not do to your arguments - including the expansion almost every tutorial says it will not do.

    expand_argument_vars

    Updated 23 Aug 2026

  3. Hands-on Lab 13 min

    Finding Ansible Modules with ansible-doc

    Search several thousand modules, read the one you need, and copy a working example out of the terminal.

    ansible-doc -s

    Updated 23 Aug 2026

  4. Hands-on Lab 15 min

    Ansible Idempotence, changed and ok

    Run the same thing twice and watch the second run do nothing, then preview a real change before making it.

    --check --diff

    Updated 23 Aug 2026

Plays and Playbooks8 guides

Variables, facts, loops, conditionals, handlers, and failing on purpose.

  1. Hands-on Lab 15 min Paid

    Ansible Playbook Basics

    Turn four ad-hoc commands into one file, run it twice, and read the recap line that tells you it is safe to run again.

    ansible-playbook site.yml

    Updated 23 Aug 2026

  2. Hands-on Lab 16 min Paid

    Ansible Variables and Precedence

    Define the same variable in five places at once, then delete them one at a time to watch the winner change.

    -e beats everything

    Updated 23 Aug 2026

  3. Hands-on Lab 15 min Paid

    Ansible Facts and Gathering Overhead

    Measure what fact gathering adds to every play, then add a fact of your own that Ansible collects automatically.

    gather_facts: false

    Updated 23 Aug 2026

  4. Hands-on Lab 16 min Paid

    Ansible Loops and loop_control

    Loop over a list, over dictionaries, and over the results of a previous loop - then make the output readable again.

    loop_control: label

    Updated 23 Aug 2026

  5. Hands-on Lab 15 min Paid

    Ansible Conditionals and Jinja Expressions

    Branch on a fact, on a registered result and on group membership - and see why the most-repeated when: mistake now produces a deprecation warning instead.

    when: without {{ }}

    Updated 23 Aug 2026

  6. Hands-on Lab 15 min Paid

    Ansible Handlers and Notification Behaviour

    Notify a handler from two tasks and watch it run once at the end - then break the play and watch it not run at all.

    force_handlers: true

    Updated 23 Aug 2026

  7. Hands-on Lab 17 min Paid

    Ansible Error Handling with ignore_errors and block

    See what a failure does by default, then take control of it four different ways.

    block / rescue / always

    Updated 23 Aug 2026

  8. Hands-on Lab 17 min Paid

    Common Ansible Modules

    Compute a variable, download a file, call an API, wait for something to be ready, and run a job that outlasts the connection.

    set_fact, uri, wait_for, async

    Updated 23 Aug 2026

Templates, Files and Vault6 guides

Generate configuration, edit files in place, and encrypt what should not be in git.

  1. Hands-on Lab 17 min Paid

    Ansible Templates with Jinja2

    Render one Jinja2 file into a real configuration built from facts, arithmetic, a loop and a conditional - then change one variable and see the diff.

    ansible.builtin.template

    Updated 23 Aug 2026

  2. Hands-on Lab 16 min Paid

    Ansible File Editing with lineinfile and blockinfile

    Change one setting in an existing config, and see what happens when you forget the one parameter that makes it idempotent.

    regexp, or you get duplicates

    Updated 23 Aug 2026

  3. Hands-on Lab 15 min Paid

    Ansible File Copy and Fetch

    Package files on a managed node, pull them back to the control node, and unpack them onto a different host.

    fetch pulls, copy pushes

    Updated 23 Aug 2026

  4. Hands-on Lab 16 min Paid

    Ansible Vault for Secrets

    Encrypt a variables file, use it in a play without decrypting it, and change the password without touching the contents.

    $ANSIBLE_VAULT;1.1;AES256

    Updated 23 Aug 2026

  5. Hands-on Lab 14 min Paid

    Ansible Git Repository Cloning

    Get a playbook repository onto a control node, and understand the branch-name trap that stops the first push.

    git clone

    Updated 28 Aug 2026

  6. Hands-on Lab 13 min Paid

    Ansible Playbooks in Git

    Track playbooks properly, and keep the Vault password out of the repository the one time it matters.

    .gitignore

    Updated 28 Aug 2026

Roles and Collections5 guides

Package a playbook so somebody else can use it, and install what others packaged.

  1. Hands-on Lab 16 min Paid

    Ansible Role Creation

    Turn a playbook into something reusable, and learn which of the eight directories you actually need.

    ansible-galaxy init

    Updated 23 Aug 2026

  2. Hands-on Lab 16 min Paid

    Ansible Role Variables and Overrides

    Call a role three ways, override its defaults, fail to override its vars, and find out why tags behave differently for the two include styles.

    import_role vs include_role

    Updated 23 Aug 2026

  3. Hands-on Lab 14 min Paid

    Ansible Play Execution Order

    Number six sections of a play and watch them execute in an order that is not the order you wrote them.

    pre_tasks, roles, tasks, post_tasks

    Updated 23 Aug 2026

  4. Hands-on Lab 18 min Paid

    Installing Ansible Roles from Galaxy

    Install a role from Galaxy, watch it fail on your distribution, and fix it without editing a line of it.

    requirements.yml

    Updated 23 Aug 2026

  5. Hands-on Lab 13 min Paid

    Ansible Collections and Fully Qualified Collection Names

    Find out where your modules actually come from, and why the long names exist.

    namespace.collection.module

    Updated 23 Aug 2026

Automating Administration8 guides

Packages, services, users, storage, firewall and scheduling - the RHCSA tasks.

  1. Hands-on Lab 15 min Paid

    Ansible Package Management

    Install packages the portable way and the specific way, and find out which state makes a playbook report change forever.

    state=present vs latest

    Updated 23 Aug 2026

  2. Hands-on Lab 16 min Paid

    Ansible Service State and Enablement

    Install a unit file, start it, and find out why editing the file afterwards changes nothing until you tell systemd to look again.

    daemon_reload

    Updated 23 Aug 2026

  3. Hands-on Lab 16 min Paid

    Ansible Users, Groups and Password Hashes

    Create accounts properly, then watch a plain-text password produce a login nobody can ever use - with no error at all.

    password_hash('sha512')

    Updated 23 Aug 2026

  4. Hands-on Lab 18 min Paid

    Ansible Filesystems, LVM and Persistent Mounts

    Build a volume group, a logical volume, a filesystem and a persistent mount - on a loop device, so nothing real is at risk.

    state: mounted

    Updated 23 Aug 2026

  5. Hands-on Lab 15 min Paid

    Ansible Firewall Rules and Safe Ordering

    Configure a firewall from Ansible over the connection the firewall is about to start filtering - without losing the machine.

    allow SSH first

    Updated 23 Aug 2026

  6. Hands-on Lab 14 min Paid

    Ansible Scheduled Tasks with cron

    Create a cron job, change its schedule, then rename it and watch a duplicate appear out of nowhere.

    #Ansible: <name>

    Updated 23 Aug 2026

  7. Hands-on Lab 16 min Paid

    Ansible Permissions, ACLs and File Modes

    Write a file mode three different ways and find out which one silently sets the sticky bit.

    mode: 644 becomes 1204

    Updated 23 Aug 2026

  8. Hands-on Lab 15 min Paid

    Ansible archive and unarchive Modules

    Pack and unpack files on managed nodes, and know which of the two modules is not where you expect it.

    unarchive

    Updated 28 Aug 2026

Scale and Debugging4 guides

Forks, serial, tags, limits, and finding out why a play did the wrong thing.

  1. Hands-on Lab 15 min Paid

    Ansible forks, serial and Rolling Changes

    Control how many machines Ansible touches at once, and turn one play into a rolling deployment with a single line.

    serial: 1

    Updated 23 Aug 2026

  2. Hands-on Lab 14 min Paid

    Running Selected Ansible Tasks with Tags

    Run four tasks out of five, then one host out of two, then start half way through - without editing anything.

    --tags, --limit, --start-at-task

    Updated 23 Aug 2026

  3. Troubleshooting 15 min Paid

    Debugging Ansible Playbooks

    Turn up the verbosity until you can see the SSH command, print any variable, and make a playbook refuse to run on the wrong host.

    -vvv, debug, assert

    Updated 23 Aug 2026

  4. Hands-on Lab 16 min Paid

    Running Ansible from Shell Scripts

    Write scripts that run ad-hoc commands and playbooks, and find out why checking the exit code is not enough.

    exit 0 means nothing ran

    Updated 23 Aug 2026

Bonus: Beyond the Blueprint5 guides

Not on the EX294 objective list, and worth knowing anyway - dynamic inventory, execution environments, performance and linting.

  1. Hands-on Lab 16 min Paid

    Ansible Dynamic Inventory

    Replace a static file with a script that prints JSON, then add groups from data you already have - and find out why grouping on facts does not work.

    inventory that is a program

    Updated 23 Aug 2026

  2. Hands-on Lab 17 min Paid

    Ansible Execution Environments and ansible-navigator

    Run a playbook inside a container that carries its own Ansible, collections and Python - so the control node stops being the variable.

    ansible-navigator run --eei

    Updated 23 Aug 2026

  3. Hands-on Lab 16 min Paid

    Ansible Performance Tuning

    Measure the same playbook six ways, find the setting that gives a fifth of the runtime back - and the command that will tell you it is switched off when it is on.

    pipelining = True

    Updated 23 Aug 2026

  4. Configuration 15 min Paid

    ansible-navigator.yml Configuration

    Put the flags you keep retyping into a file, and be able to prove which layer a setting came from.

    settings --effective

    Updated 28 Aug 2026

  5. Hands-on Lab 16 min Paid

    Ansible Development Containers with ansible-navigator

    Run the whole Ansible toolchain out of a container, and see exactly how it differs from the machine it runs on.

    navigator exec

    Updated 28 Aug 2026

← Back to Learn