EX294 · Hands-on practice

EX294 Hands-on Labs — practise in a simulated Ansible control node

Learn it. Practise it. Make it stick.

36 practical tasks + 4 troubleshooting challenges. Familiar administration workflows, gradual hints and explanations. Independent simulation — no real tenant, device or cloud resources.

First five tasks are free, repeatable and have no expiry · No credit card required.

Access options

One-time payments, no automatic renewal. The first five tasks stay free either way.

EX294 Hands-on Labs

€14.99

All labs for this course. 30 days from payment confirmation.

One-time payment · No automatic renewal.

Purchases are temporarily unavailable. Enjoy your 5 open tasks.

Best value

EX294 Practice Exam + Hands-on Labs

€29.99

Save €3.99. Exam and all labs each get 60 days.

One-time payment · No automatic renewal.

Purchases are temporarily unavailable. Enjoy your 5 open tasks.

Certificate of Completion

Finish the course. Prove it.

Complete all 36 labs and you can download a certificate of completion with your name, the skills you practised and a unique ID. Challenges are optional. Anyone can check it on a public verification page — and add it to LinkedIn in one click.

  • Not self-declared. Before issuing, our server re-runs the grader on every lab you saved, so a checkbox in your browser is not enough.
  • Verifiable. Every certificate has its own page at examitlab.com/verify/<ID>.
  • Honest. It certifies that you completed this course. It is independent training, not an official certification.

Sample certificate — name and ID are fictional.

Your learning path

Work through the tasks in order — each one builds on the last.

LAB 01 · FREE

Build the inventory and ansible.cfg for the lab

Ansible configuration · 10–12 min

Open lab →

LAB 02 · FREE

Prepare the managed nodes: SSH key, devops user and passwordless sudo

Managed node setup · 12–15 min

Open lab →

LAB 03 · FREE

First playbook: packages, services and firewall on the web servers

Playbook creation · System administration · 12–15 min

Open lab →

LAB 04 · FREE

Users and groups from a variables file, with loops

Variables · Loops · Users and groups · 12–15 min

Open lab →

LAB 05 · FREE

Template the MOTD with facts and reload a service with a handler

Templates · Facts · Handlers · 12–15 min

Open lab →

LAB 06 · LOCKED

Ad-hoc commands: ping, facts, command and copy without a playbook

Ansible core components · 8–10 min

Included with full EX294 lab access

LAB 07 · LOCKED

Conditionals: act only on the right hosts, using facts and groups

Conditional tasks · 10–12 min

Included with full EX294 lab access

LAB 08 · LOCKED

Error handling: block/rescue/always, ignore_errors and failed_when

Handling task failure · 10–12 min

Included with full EX294 lab access

LAB 09 · LOCKED

Register and report: collect command output into per-host and central reports

Variables · Facts · 10–12 min

Included with full EX294 lab access

LAB 10 · LOCKED

Use ansible-doc to find the right module and its options

Documentation · 6–8 min

Included with full EX294 lab access

LAB 11 · LOCKED

group_vars and host_vars: variable precedence by directory

Variables · 8–10 min

Included with full EX294 lab access

LAB 12 · LOCKED

Ansible Vault: encrypt the secrets file and use it in a play

Ansible Vault · 10–12 min

Included with full EX294 lab access

LAB 13 · LOCKED

Jinja2 templates: generate a hosts file from inventory and facts

Templates · 10–12 min

Included with full EX294 lab access

LAB 14 · LOCKED

set_fact and custom facts in /etc/ansible/facts.d

Facts · 10–12 min

Included with full EX294 lab access

LAB 15 · LOCKED

Write a role: apache with a template, a handler and defaults

Roles · 12–15 min

Included with full EX294 lab access

LAB 16 · LOCKED

Install roles and collections from requirements files

Roles and collections · 10–12 min

Included with full EX294 lab access

LAB 17 · LOCKED

RHEL system roles: timesync and selinux

Roles and collections · 10–12 min

Included with full EX294 lab access

LAB 18 · LOCKED

Collections: install into the project and use fully qualified module names

Collections · 8–10 min

Included with full EX294 lab access

LAB 19 · LOCKED

Storage with modules: parted, lvg, lvol, filesystem and mount

System administration (storage) · 12–15 min

Included with full EX294 lab access

LAB 20 · LOCKED

Firewall rules and SELinux with modules

System administration (security) · 10–12 min

Included with full EX294 lab access

LAB 21 · LOCKED

File content: lineinfile, blockinfile, copy with content and replace

File content · 10–12 min

Included with full EX294 lab access

LAB 22 · LOCKED

Archive and unarchive across hosts

Archiving · 8–10 min

Included with full EX294 lab access

LAB 23 · LOCKED

Scheduling: cron and at modules

Scheduling · 8–10 min

Included with full EX294 lab access

LAB 24 · LOCKED

Packages and repositories: yum_repository, dnf and package facts

Packages · 8–10 min

Included with full EX294 lab access

LAB 25 · LOCKED

One playbook, three services: host-specific variables drive the tasks

System administration (services) · 10–12 min

Included with full EX294 lab access

LAB 26 · LOCKED

Users with aging, SSH keys and sudo, delivered as a role

Users and groups · 12–15 min

Included with full EX294 lab access

LAB 27 · LOCKED

NFS server and clients, automated end to end

System administration (file systems) · 12–15 min

Included with full EX294 lab access

LAB 28 · LOCKED

ansible-navigator: settings file, syntax check, check mode and a logged run

Playbook execution · 8–10 min

Included with full EX294 lab access

LAB 29 · LOCKED

Tags, --limit and --start-at-task for partial runs

Playbook execution · 8–10 min

Included with full EX294 lab access

LAB 30 · LOCKED

Delegation and run_once: a status log on the control node

Advanced playbooks · 8–10 min

Included with full EX294 lab access

LAB 31 · LOCKED

Privilege escalation per play, per task and per user

Managed node setup · 8–10 min

Included with full EX294 lab access

LAB 32 · LOCKED

Reusable task files: include_tasks versus import_tasks

Playbook creation · 10–12 min

Included with full EX294 lab access

LAB 33 · LOCKED

Troubleshoot a failing playbook with --syntax-check, -v and check mode

Handling task failure · 10–12 min

Included with full EX294 lab access

LAB 34 · LOCKED

Git basics: version the ansible project

Source control · 8–10 min

Included with full EX294 lab access

LAB 35 · LOCKED

Shell script wrapper for ansible-playbook (RHCSA foundation)

RHCSA foundation skills · 8–10 min

Included with full EX294 lab access

LAB 36 · LOCKED

Capstone: the enrolment stack — web, database and proxy in one site playbook

Capstone · 20–25 min

Included with full EX294 lab access

Troubleshooting challenges

Inspect evidence, identify the cause, make a safe fix and verify it. 4 separate exercises, included with full EX294 lab access.

Playbook unreachable: the nodes reject the control node

10–12 min

Locked · Full lab access required

The handler never fires

8–10 min

Locked · Full lab access required

Vault password changed, deployment broken

8–10 min

Locked · Full lab access required

Role installed in the wrong path

6–8 min

Locked · Full lab access required

EX294 hands-on labs — questions

Does EX294 have labs, and can I practise them without a tenant?
Yes. ExamIT Lab gives you 36 guided EX294 labs in a simulated Ansible control node. Nothing is deployed to a real Microsoft tenant, subscription or device, so there is nothing to set up, nothing to pay Microsoft for, and nothing you can break.
Are the EX294 labs free?
The first 5 labs in the learning order are free, repeatable and never expire — no credit card and no sign-up required to start. The full course of 36 labs plus 4 troubleshooting challenges is a one-time purchase with no subscription.
What does a EX294 lab look like?
Each lab opens a realistic simulation of a simulated Ansible control node with four managed RHEL 9 nodes — inventories, ansible.cfg, ad-hoc commands, playbooks with loops and conditionals, handlers, roles and collections, RHEL system roles, templates, Ansible Vault, ansible-navigator, storage, SELinux, firewalld, services, scheduling and NFS automation. You get a task brief, a guided or independent mode, progressive hints and a "Check configuration" button that grades the actual end state you left behind — not just the buttons you clicked.
Do the labs cover the current EX294 exam outline?
The labs are mapped to the objectives in Microsoft's current EX294 study guide, and we re-audit the mapping when Microsoft updates the skills measured. Combine them with the EX294 practice test on ExamIT Lab for full coverage.
Is there a certificate at the end?
Yes. When all 36 labs are complete you can issue a certificate of completion in your account: a PDF with your name and a unique ID, an Add to LinkedIn link and a public verification page. Before issuing, the server re-runs the course grader on every lab you saved, so it reflects work you really did. It certifies completion of this course; it is independent training, not an official certification.
How is this different from a Microsoft Learn sandbox or a trial tenant?
A trial tenant gives you a blank environment and no feedback. These labs give you a pre-built scenario with fictional users, devices and policies, a clear goal, and automatic checking of your result — so you practise the exact administration workflows the EX294 exam expects, in minutes, not hours of setup.

Access is per course. Sign in for account progress. After paid access expires, your saved progress is retained and the first five tasks remain free.