The RHCE EX294 exam is a hands-on Ansible test. Red Hat publishes the official objective list on its training site, but that list is not a day-by-day study plan. This page turns those objectives into a learning path for the GoLinuxCloud Ansible course so you know what to practice on a Rocky Linux 10 lab and in what order.
Tested on: Rocky Linux 10.2 (Red Quartz); kernel 6.12.0-211.16.1.el10_2.0.1.x86_64.
Objectives below were reviewed against the official EX294 exam page in July 2026.
What EX294 tests (in plain terms)
On exam day you receive live systems and a brief. You write Ansible content, run it, and prove managed hosts reach the defined end state. Red Hat grades by applying your playbooks to fresh systems—not by multiple-choice answers.
The exam is listed as Red Hat Certified Advanced System Administrator in Ansible. Passing it counts toward RHCE in Ansible and RHCA in Ansible on Red Hat's certification path. Many people still search for RHCE EX294; that name refers to the same automation exam.
Prerequisites before you book
Red Hat expects you to arrive with Linux administration fundamentals and Ansible exposure:
| Preparation | What it means for you |
|---|---|
| RH124 + RH134 (or RH199, or similar work experience) | You can manage users, storage, networking, services, and SELinux on RHEL without looking up every command. |
| AU294 (or comparable Ansible experience) | You have written playbooks, used inventory, and run ansible-navigator or ansible-playbook before. |
| Review EX200 objectives | EX294 tasks often automate skills you would otherwise do manually as an RHCSA. |
| Review EX294 objectives | Use the checklist sections below as your syllabus. |
Official training (AU294) helps but is not required. What matters is repeated practice on a multi-node lab.
Exam format and constraints
Knowing the rules early saves surprises on exam day:
| Topic | Detail |
|---|---|
| Style | Practical tasks on live systems |
| Systems | Multiple hosts (control node, managed nodes, fresh targets) |
| Evaluation | Your playbooks are applied to newly installed systems; services and files must match the brief |
| Internet | Not provided—you cannot open blogs or search engines |
| Documentation | Product documentation available on the exam environment (practice with ansible-doc and shipped docs offline) |
| Tools | ansible-playbook, ansible-navigator, Git basics, VS Code workflows |
| Persistence | Settings must remain after reboot |
Official objectives grouped for study
The following tables follow Red Hat's published EX294 study points. Wording is condensed; always confirm against the official page before you book.
A. RHCSA skills (automated with Ansible)
EX294 assumes you can perform standard RHCSA administration—often by driving modules instead of typing one-off commands:
| Area | Examples of what to automate |
|---|---|
| Essential tools | Files, permissions, archives, basic scripting literacy |
| Running systems | Boot targets, services, journals, time sync |
| Local storage | Partitions, LVM, swaps, grow volumes |
| File systems | Create, mount persistently, /etc/fstab |
| Deploy and maintain | Packages, repos, kernel args, basic networking |
| Users and groups | Accounts, passwords, SSH keys, sudo |
| Security | SELinux, firewalld, basic hardening |
| Shell scripts | Read simple scripts well enough to automate around them |
You do not get a separate RHCSA exam inside EX294, but tasks assume this baseline.
B. Ansible core concepts
| Objective | Study focus |
|---|---|
| Inventories | Static INI/YAML, groups, children, host patterns |
| Modules | Built-in modules, FQCN, return values |
| Variables | Play vars, inventory vars, facts, register |
| Facts | setup, fact filters, when to disable facts |
| Loops | loop, until, retries |
| Conditionals | when, tests, safe expressions |
| Plays and playbooks | Structure, multiple plays, idempotency |
| Task failure | block / rescue / always, failed_when, changed_when |
| Configuration | ansible.cfg, project layout |
| Roles | Structure, defaults, handlers, dependencies |
| Documentation | ansible-doc, collection docs, offline lookup |
Course pointers: inventory, variables, facts, operators, conditionals, loops, handlers, blocks, roles.
C. Configure Ansible and managed nodes
| Objective | Practice on your lab |
|---|---|
Create and modify ansible.cfg |
Inventory path, remote user, become, roles path, collections path |
Modify ansible-navigator.yml |
Execution environment image, stdout mode, artifact dir |
| Static inventory | Groups, host vars, group vars |
| Managed node setup | SSH keys, ansible user, privilege escalation |
| Deploy files | ansible.builtin.copy, ansible.builtin.template, permissions |
Course pointers: install Ansible, ansible.cfg, passwordless SSH patterns.
D. Run playbooks and use ansible-navigator
| Objective | What to rehearse |
|---|---|
ansible-playbook |
Syntax-check, check mode, diff, limits, tags |
ansible-navigator |
Run playbooks, browse collections, inspect environment |
| Discover modules in collections | Find FQCN, read docs, run tasks with collection modules |
| Build inventory in navigator | Match exam-style project workflow |
E. Git and VS Code (exam workflow)
| Objective | Minimum practice |
|---|---|
| Clone a Git repository | git clone, branch awareness |
| Add files and commit | Stage playbooks, roles, inventory |
| VS Code | Edit YAML, integrated terminal, push to remote |
| Navigator in VS Code | Configure ansible-navigator.yml, run from dev container if provided |
Pointer: Visual Studio Code with Ansible.
F. Playbooks: modules, state, and logic
| Objective | Hands-on habit |
|---|---|
| Common modules | ansible.builtin.package, ansible.builtin.dnf, ansible.builtin.service, ansible.builtin.systemd_service, ansible.builtin.user, ansible.builtin.file, ansible.builtin.copy, ansible.builtin.template, ansible.posix.firewalld, community.general.sefcontext, ansible.posix.mount, ansible.builtin.cron |
| Register results | register, debug, use output in when |
| Conditionals | Facts, variables, operators |
| Error handling | Blocks, rescue, custom failure |
| Desired state | Idempotent tasks; prefer modules over shell |
Pointer: playbook introduction, Jinja2 templates.
G. Roles and Ansible Content Collections
| Objective | Deliverable |
|---|---|
| Create roles | tasks, handlers, defaults, templates, meta |
| Install and use roles | ansible-galaxy, requirements.yml |
| Install collections | ansible-galaxy collection install, collections/requirements.yml |
| Use collection content | FQCN roles and modules in playbooks |
Pointers: role structure, create and install Galaxy roles, collections and RHEL System Roles.
H. Automate RHCSA-style tasks with Ansible
These domains appear repeatedly in practice exams:
| Domain | Typical modules (FQCN) |
|---|---|
| Packages and repositories | ansible.builtin.package, ansible.builtin.dnf, ansible.builtin.dnf5, ansible.builtin.yum_repository |
| Services | ansible.builtin.service, ansible.builtin.systemd_service, handlers for restarts |
| Firewall | ansible.posix.firewalld |
| File systems and storage | community.general.parted, community.general.lvol, community.general.filesystem, ansible.posix.mount |
| File content | ansible.builtin.copy, ansible.builtin.template, ansible.builtin.lineinfile, ansible.builtin.blockinfile |
| Archiving | ansible.builtin.archive, ansible.builtin.unarchive |
| Scheduling | ansible.builtin.cron, ansible.posix.at |
| Security | ansible.posix.selinux, ansible.posix.seboolean, community.general.sefcontext |
| Users and groups | ansible.builtin.user, ansible.builtin.group, vault-backed passwords |
Many RHEL administration modules are not part of ansible.builtin. During practice, check the FQCN with ansible-doc and confirm whether the module comes from ansible.builtin, ansible.posix, or community.general.
Course pointers: start with what is Ansible for control-node architecture; then practice RHCSA-style domains on Rocky Linux with manage packages, users and sudo, services and cron, LVM and mounts, firewalld and SELinux, and generated hosts plus archives.
I. Templates and Ansible Vault
| Objective | Practice artifact |
|---|---|
| Jinja2 templates | Ship config files from templates/ |
| Vault | Encrypt files and variables, multiple vault IDs, run playbooks with vault password |
Pointer: Ansible Vault tutorial.
EX294 objectives checklist
Before moving to mock exams, you should be able to:
- Build a project directory with
ansible.cfg, inventory, roles,group_vars, and vault files. - Run the same playbook with
ansible-playbookandansible-navigator. - Use
ansible-docto find module options without internet access. - Install and reference collections with FQCNs.
- Automate users, packages, services, firewall, SELinux, storage, cron, templates, and Vault.
- Reboot a managed node and confirm the result still works.
Where the course covers each exam area
The Ansible tutorial has twelve chapters. The table below matches our course layout to the EX294 buckets above—not Red Hat's training module numbers.
| Chapter | What you practice | EX294 areas |
|---|---|---|
| Getting Started | Exam objectives overview, Ansible architecture | Overview |
| Installation and Lab Setup | Rocky 10 lab, install, ansible.cfg, navigator, project layout |
C, D |
| Inventory and Connectivity | Inventory, group/host vars, ad hoc, modules, collections | B, C |
| Variables, Facts and Data | Variables, precedence, facts, register | B |
| Files, Templates and Reports | Jinja2 templates, lineinfile family, copy/fetch, hosts and archives | F, H, I |
| Logic and Control Flow | when, loops, handlers, tags, include/import, blocks |
B, F |
| Rocky Linux Administration (EX294) | Packages, users, services/cron, LVM, firewalld/SELinux, file contexts | A, H |
| Roles and Collections | Role layout, Galaxy, RHEL system roles | G |
| Ansible Vault | Encrypt strings and files, vault in group_vars |
I |
| Troubleshooting | Inventory/SSH, debug playbooks, collection and variable errors | All groups |
| Real-World Automation | AWS provisioning (optional; not on EX294) | — |
Starting from scratch? Skim Getting Started, then work through Installation and Lab Setup—build the EX294 Rocky Linux lab with one control node and one managed node on a host-only network.
Study paths
Full course path (8–12 weeks, ~8–12 hours per week)
Best if Ansible is new or RHCSA skills are rusty.
| Phase | Weeks | Goals |
|---|---|---|
| Linux baseline refresh | 1–2 | Users, sudo, LVM, firewalld, SELinux on Rocky 10 without Ansible |
| Lab and tooling | 2–3 | SSH keys, inventory, ansible.cfg, navigator, project tree |
| Playbook core | 4–5 | Variables, facts, templates, handlers, idempotency |
| Control flow | 6–7 | when, loops, tags, blocks, vault |
| Roles and collections | 8–9 | Galaxy, requirements files, RHEL system roles |
| Admin automation | 10 | Package/repo/user/storage/firewall playbooks |
| Exam rehearsal | 11–12 | Timed scenarios, no browser, fix breaks under pressure |
Exam-cram path (3–4 weeks, strong RHCSA)
Best if you administer RHEL daily and only need Ansible exam mechanics.
| Week | Focus |
|---|---|
| 1 | Lab bootstrap, inventory, ad hoc, ansible-doc, first playbooks |
| 2 | Roles, collections, vault, templates, navigator-only drills |
| 3 | Full RHCSA-style automation sets (storage + firewall + users in one playbook) |
| 4 | Timed mock exams, weak-module review, reboot persistence checks |
Skip deep dives on topics you already automate in shell; spend time on navigator, collections FQCN, and vault plus roles in one repo.
Weekly checklist (first four weeks)
| Week | Read | Do on the lab |
|---|---|---|
| 1 | A + C | Build control and managed nodes; SSH; static inventory; ping |
| 2 | B + D | Ad hoc modules; ansible-doc; run a playbook with navigator |
| 3 | F | Play with register, when, handlers; verify second run shows ok not changed |
| 4 | G + I | Author a role; encrypt a var with vault; template a config file |
Recommended lab size
For learning the basics, one control node and one managed node is enough. For EX294-style practice, use one control node and at least two managed nodes. Add a third managed node when you start timed practice so you can test inventory groups, host patterns, --limit, and rolling changes.
| Role | Suggested host | Notes |
|---|---|---|
| Control node | rocky1 |
ansible-core, ansible-navigator, Git, VS Code optional |
| Managed node | rocky2 |
Host-only IP (example 192.168.56.109) |
| Second managed (recommended) | rocky3 |
Needed for groups, --limit, host patterns, and rolling changes |
| Third managed (timed practice) | Extra VM when you mock the exam | Simulates multi-host task lists |
If your laptop has limited RAM, create the second managed node as a small minimal VM or linked clone rather than using another IP on the control node.
Document hostnames in /etc/hosts on every node. Fix default localhost.localdomain names before you write inventory—exam tasks assume resolvable hostnames.
High-yield skills easy to underestimate
| Skill | Why it matters on EX294 |
|---|---|
ansible-doc speed |
Replaces web search when the exam is offline |
| Idempotency | Second run should not keep changing the system |
| Handlers | Restart only when config actually changes |
Vault in group_vars |
Secrets layout without plaintext in Git |
| SELinux contexts | community.general.sefcontext plus restore when tasks fail on enforcing hosts |
| Persistence | Mounts, firewall, services enabled at boot |
| Navigator collections UI | Finding FQCN without guessing module names |
Exam-day habits
Work from a single project directory with ansible.cfg at the root. Read the entire task list before you write—many tasks share variables, roles, or vault files.
Use ansible-playbook --syntax-check before long runs. When something fails, read the failed task closely; fix YAML indentation and undefined variables before you rewrite working tasks.
Leave time to reboot a managed host and re-run verification commands. If a service or mount disappears after reboot, your solution is not finished.
What this page does not cover
This page explains the objectives and study order. It does not replace hands-on labs. Use the linked course chapters for commands, playbooks, roles, Vault, and Rocky Linux administration walkthroughs.
References
- Red Hat EX294 exam objectives (official)
- Ansible documentation
- GoLinuxCloud Ansible tutorial hub
Summary
EX294 rewards Ansible playbooks that keep RHEL systems in a defined state: inventory and navigator setup, solid playbook structure, roles and collections, vault, and RHCSA-style automation with modules—not ad hoc shell. Use the objective tables above as your checklist, map each group to a course chapter, and practice on a multi-node Rocky Linux 10 lab until playbooks survive a reboot and a second idempotent run.

