RHCE study plan
RHCE · Give each week a clear focus.
8 weeks · About 8 hours per week
Understand and use core Ansible components & Install and configure an Ansible control node
Install ansible-core on a control node and confirm the version with ansible --version
Write an ansible.cfg that sets inventory, roles_path, host_key_checking, and a default remote_user, then prove each setting is picked up
Build a static INI inventory containing two groups, one child group, and two host variables
Configure SSH key-based authentication and passwordless sudo for a non-root automation user on at least two managed hosts
Run ansible all -m ping and ansible all -m command -a 'id' to confirm connectivity and privilege escalation
Your checkpoint
A committed project directory (ansible.cfg + inventory + README) where ansible all -m ping -b returns SUCCESS for three hosts from a single command
Configure Ansible managed nodes and run ad hoc commands & Understand and use core Ansible components
Run ad hoc commands that scope execution with -l, -b, -K, -u, and --limit-style host patterns
Use the setup module with filter and a Jinja expression to extract a single fact such as default IPv4 address
Install, remove, and query packages ad hoc with the package/dnf module
Manage a file and a service ad hoc with the file, copy, and service modules
Identify which module and parameters to use for an unfamiliar task by reading ansible-doc and ansible-doc -l output
Your checkpoint
A notes file listing 15 ad hoc commands with the exact output of each, including at least one fact-filtered command and one privilege-escalated package change
Create Ansible plays, playbooks, roles, and manage variables and facts
Write a playbook with three tasks that install a package, deploy a config file, and start/enable a service
Add a handler and trigger it with notify only when the config task reports changed
Add a loop to create multiple users or files and a when condition based on a gathered fact
Run the playbook with --check --diff, then run it twice and read the recap to judge idempotence
Fix every task that reports changed on the second run
Your checkpoint
A site.yml whose second consecutive run against two hosts shows changed=0, failed=0 in the PLAY RECAP, captured as terminal output
Create Ansible plays, playbooks, roles, and manage variables and facts
Place variables in play vars, vars_files, group_vars, and host_vars, then state which wins under Ansible variable precedence
Register a task result and use its fields in a later when condition and a debug message
Template a configuration file with Jinja2 using a for loop and an if block, driven by host-specific variables
Reference magic variables such as inventory_hostname, groups, and hostvars inside a template
Encrypt a secrets file with ansible-vault and run a playbook that decrypts it via --ask-vault-pass or a vault password file
Your checkpoint
A playbook that renders a distinct, host-specific configuration file on each of two managed hosts plus one vault-encrypted variable file used by the play
Create Ansible plays, playbooks, roles, and manage variables and facts & Understand and use core Ansible components
Scaffold a role with ansible-galaxy init and place tasks, handlers, templates, defaults, vars, and meta in the correct subdirectories
Refactor the week 3-4 playbook into that role and call it from a play with a role-level variable override
Declare role dependencies in meta/main.yml and a requirements.yml for an external role
Install and use a collection with ansible-galaxy collection install, then call a module by its fully qualified collection name
Re-apply the role twice and confirm the second run is idempotent
Your checkpoint
A reusable role installed via requirements.yml or referenced by path, applied to two hosts with a variable override, and a second run with changed=0
Automate standard system administration tasks with Ansible
Automate account management with the user, group, and authorized_key modules including a generated SSH key pair
Schedule a recurring job with the cron module and verify the crontab on the target
Open a service port persistently with the firewalld or posix module set and confirm the rule survives a reload
Create a volume group, logical volume, filesystem, and mount entry with lvg, lvol, filesystem, and mount
Set an SELinux boolean or file context with the seboolean and sefcontext modules and apply it
Your checkpoint
One storage-and-accounts playbook that creates a user with an authorized key, a cron entry, a firewall rule, and a mounted logical volume, verified by post-task assertions or commands
Automate standard system administration tasks with Ansible & Create Ansible plays, playbooks, roles, and manage variables and facts
Wrap risky tasks in block/rescue/always and force a failure to prove the rescue path executes
Control task outcome reporting with failed_when, changed_when, and ignore_errors on a command task
Use delegate_to and run_once to perform a one-time action such as a database seed or load balancer drain
Write a multi-play playbook that targets different host groups with distinct roles and shared group_vars
Tag tasks and run the playbook with --tags and --skip-tags to select subsets
Your checkpoint
A three-play playbook (database group, web group, all hosts) with at least one block/rescue, one run_once task, and tags, demonstrated with a --tags run and a full run
Create Ansible plays, playbooks, roles, and manage variables and facts & Automate standard system administration tasks with Ansible
Rebuild a working control node and inventory from scratch in under 30 minutes without referring to notes
Complete a timed end-to-end lab: configure two managed hosts, deploy a role-based service, and harden accounts, all from playbooks
Re-run every deliverable from weeks 3-7 and log any regression or non-idempotent task
Review missed items against the domain objectives and patch the weakest two areas with targeted drills
Your checkpoint
A clean-room repo plus a pass/fail scorecard from one timed full-length practice run, with every failing item annotated and re-tested
Milestones
Week 2: Ad hoc commands reach all inventory hosts with privilege escalation, and you can select any module or fact without opening a browser
Week 4: You can explain Ansible variable precedence from memory and a templated playbook produces correct per-host output with vault-encrypted data
Week 6: A single playbook provisions accounts, scheduled jobs, firewall rules, and mounted storage idempotently on a fresh host
Week 8: A timed full-length lab from an empty control node passes end to end, with all week 3-7 deliverables re-verified as idempotent