Playbooks, roles, templates, and vault, aimed squarely at the EX294 exam.
June 24, 2025
Doing something once by hand is fine. Doing it on 200 servers by hand is how mistakes get made and how configuration drifts until no two machines are alike.
Ansible fixes that by describing the state you want and making the systems match. This course teaches it hands on from the start and aims at the Red Hat Certified Engineer exam, EX294.
Ansible describes desired state in YAML files and pushes changes over SSH. There is no agent to install on managed hosts, which removed the biggest objection people had to earlier configuration management tools. It is developed in the open at ansible.com and sponsored by Red Hat.
The course covers the architecture and the push model, then the ecosystem: ansible-core, collections, and the Navigator tooling with execution environments.
Installing Ansible and preparing the control node, the ansible.cfg configuration file and what belongs in it, running automation with ansible-navigator and execution environments, and finding answers with ansible-doc.
ansible-doc deserves a mention on its own. The module documentation is genuinely good, it is available offline, and on a practical exam with no internet access it is the difference between finishing and not finishing.
Static inventories with hosts and groups, nested groups and ranges and host patterns, inventory variables through host_vars and group_vars, and dynamic inventories that build themselves from a cloud provider or a CMDB.
Then ad-hoc commands for one off tasks, the common modules for everyday work, and the concept that underlies everything: idempotence. Running the same playbook twice should change nothing the second time. Check mode and reading results properly are how you verify that.
YAML for Ansible, which is worth its own lesson because indentation errors are the single most common beginner problem. Then your first playbook with plays and tasks, running and verifying, and multiple plays targeting different host groups.
Variables get real attention: defining and using them, scope and precedence, facts that Ansible gathers about a host, and capturing output with register and set_fact.
Variable precedence is the topic that produces the most confusion in real projects. Knowing the order in which sources override each other saves hours of debugging a value that is not what you thought it was.
Conditionals with when, loops, handlers that act only on change, and error handling with blocks, changed_when, and failed_when. Then tags for running parts of a playbook selectively.
Handlers are the idea that makes configuration management pleasant. You do not restart a service every run, you restart it only when its configuration actually changed.
Then Jinja2 templating: the template module and basic substitution, logic in templates with conditionals and loops, and filters. Templates are how one file becomes correct configuration for 300 different hosts.
What roles are and the standard directory structure, creating and using them, role variables, Galaxy, and dependencies. Roles are how automation stops being one enormous file and starts being reusable pieces.
Then collections and fully qualified module names, and installing collections with ansible-galaxy. Fully qualified names are now the expected style and they appear on the exam.
RHEL System Roles are officially supported roles for common tasks. The course uses the selinux, firewall, and storage roles specifically, which are the ones most likely to show up in both exam tasks and real work.
Encrypting secrets with ansible-vault and using vaulted data in playbooks. Automation is a wonderful way to spread a hardcoded password to every server you own, so this is not an optional topic.
Then SSH keys and privilege escalation, plus validating and bootstrapping managed nodes.
It is worth saying plainly: an Ansible control node is one of the highest value targets in an environment, because it can usually reach and change everything. It deserves the same protection as a domain controller. That principle connects directly to the privileged access material in the zero trust section.
The last part of the course automates real work: software, services, and scheduling, files and content and archiving, storage and filesystems, and users and security and the firewall. In other words, every RHCSA task done the Ansible way.
Then version control for Ansible with Git, a full project end to end, and an exam strategy and readiness checklist.
EX294 is a practical exam like RHCSA. You automate real tasks on real systems and you are graded on the result. The readiness checklist exists because the most common failure is not lack of knowledge, it is running out of time.
RHCE builds directly on the Red Hat track. Take that first if you are not yet comfortable administering a RHEL system by hand.