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.
-
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 daemonUpdated 23 Aug 2026
-
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 ansibleUpdated 23 Aug 2026
-
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 --graphUpdated 23 Aug 2026
-
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 dumpUpdated 23 Aug 2026
-
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.dUpdated 23 Aug 2026
Ad-hoc Commands and Modules4 guides
One-off tasks, the three ways to run a command, and what idempotence actually means.
-
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
-
Hands-on Lab 16 min
Ansible command, shell and raw Modules
Find out exactly what
commanddoes and does not do to your arguments - including the expansion almost every tutorial says it will not do.expand_argument_varsUpdated 23 Aug 2026
-
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 -sUpdated 23 Aug 2026
-
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 --diffUpdated 23 Aug 2026
Plays and Playbooks8 guides
Variables, facts, loops, conditionals, handlers, and failing on purpose.
-
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.ymlUpdated 23 Aug 2026
-
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 everythingUpdated 23 Aug 2026
-
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: falseUpdated 23 Aug 2026
-
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: labelUpdated 23 Aug 2026
-
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
-
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: trueUpdated 23 Aug 2026
-
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 / alwaysUpdated 23 Aug 2026
-
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, asyncUpdated 23 Aug 2026
Templates, Files and Vault6 guides
Generate configuration, edit files in place, and encrypt what should not be in git.
-
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.templateUpdated 23 Aug 2026
-
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 duplicatesUpdated 23 Aug 2026
-
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 pushesUpdated 23 Aug 2026
-
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;AES256Updated 23 Aug 2026
-
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 cloneUpdated 28 Aug 2026
-
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.
.gitignoreUpdated 28 Aug 2026
Roles and Collections5 guides
Package a playbook so somebody else can use it, and install what others packaged.
-
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 initUpdated 23 Aug 2026
-
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_roleUpdated 23 Aug 2026
-
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_tasksUpdated 23 Aug 2026
-
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.ymlUpdated 23 Aug 2026
-
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.moduleUpdated 23 Aug 2026
Automating Administration8 guides
Packages, services, users, storage, firewall and scheduling - the RHCSA tasks.
-
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 latestUpdated 23 Aug 2026
-
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_reloadUpdated 23 Aug 2026
-
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
-
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: mountedUpdated 23 Aug 2026
-
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 firstUpdated 23 Aug 2026
-
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
-
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 1204Updated 23 Aug 2026
-
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.
unarchiveUpdated 28 Aug 2026
Scale and Debugging4 guides
Forks, serial, tags, limits, and finding out why a play did the wrong thing.
-
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: 1Updated 23 Aug 2026
-
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-taskUpdated 23 Aug 2026
-
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, assertUpdated 23 Aug 2026
-
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 ranUpdated 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.
-
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 programUpdated 23 Aug 2026
-
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 --eeiUpdated 23 Aug 2026
-
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 = TrueUpdated 23 Aug 2026
-
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 --effectiveUpdated 28 Aug 2026
-
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 execUpdated 28 Aug 2026