This tutorial covers everything you need to become a Red Hat Certified Engineer (RHCE) on RHEL 10 and compatible distros. With RHEL 8 and later, Red Hat overhauled the RHCE program to focus on data-center automation with Ansible instead of advanced Linux topics, so the syllabus below is built around the RHCE EX294 exam objectives.
We start by setting up your own lab environment — hands-on practice is the only thing that makes Ansible click — then walk through inventory, playbooks, templates, roles, vaults, Rocky Linux administration tasks, and finally an optional AWS provisioning example. Every chapter is short, idempotent, and tested on Rocky Linux 10.
If you are new here, click Start the course and you will be taken to the first lesson. If you already know the basics, jump straight to the chapter you need — each lesson is also self-contained.
How to use this course
Ansible rewards repetition with small, idempotent playbooks. Read a lesson, type the YAML yourself, and run ansible-playbook with --check before applying changes on shared lab hosts. The early chapters build inventory and ad hoc commands; mid-course chapters introduce Jinja2 templates, roles, and handlers; later chapters cover Vault, troubleshooting, and a full AWS provisioning walkthrough.
When a lesson touches Rocky Linux and RHEL-family administration (users, firewalld, SELinux), it assumes you can SSH into the managed node as a user with passwordless sudo. For controller setup on your workstation, see install Ansible and keep Python 3 and pip available for collections installed from Ansible Galaxy.
Lab layout
| Role | Purpose |
|---|---|
| Control node | Runs ansible, ansible-playbook, and Galaxy collections |
| Managed nodes | 1–3 Rocky or RHEL VMs for playbook targets |
| Optional AWS account | Final chapter provisions EC2 with dynamic inventory |
Use SSH keys rather than passwords in inventory.ini. Store secrets in Ansible Vault once you reach the security chapters instead of leaving plaintext credentials in group_vars.
RHCE EX294 topic map
| Objective area | Where it appears in this course |
|---|---|
| Inventories and ad hoc commands | Getting Started, inventory patterns |
| Playbooks, handlers, conditionals | Core playbook chapters |
| Roles and Galaxy content | Roles, collections, and Galaxy imports |
| Templates and files | Jinja2 templates, copy vs template |
| Vault and variables | Vault encrypt/decrypt, group_vars layering |
| System administration tasks | User, package, service, firewall, and SELinux modules |
| Troubleshooting | Debug strategies, verbosity, common module errors |
Pair this course with the Shell scripting tutorial for custom modules and the Kubernetes tutorial when you automate cluster bootstrap after hosts are provisioned.

