RHCE#

Red Hat Certified Engineer (RHCE)

  • Ansible
  • RHCSA: RHCE assumes proficiency in all of the RHCSA objectives. RHCSA is also a prerequisite.

Learning resources#

Books#

There aren't that many book resources that aren't out of date... current exam is on RHEL 9. Since RHEL 8 the exam is 90% Ansible-based. There seem to be a lot of study resources from prior to that, RHEL 7, etc. But that was a completely different exam.

  • Red Hat RHCE 8 (EX294) Cert Guide - Sander van Vugt - A bit outdated. Refers to Ansible Tower instead of AAP. Based on RHEL 8 but current exam is RHEL 9. But Sander van Vugt's courses and books are still considered the defacto standard for preparing for both RHCSA and RHCE. His courses may be better, but I'm not 100% sold on how the content is structured in his books... it doesn't resonate as well with me compared to other written learning materials I've used.
  • Red Hat Certified Engineer (RHCE) Ansible Automation Study Guide | Red Hat Developer - Free with developer subscription. A good overview of the objectives, but it's breadth vs depth. Probably best as a supplementary study source. Seems like Red Hat is trying to sell you courses, AAP, etc. by giving away this ebook for free.
  • Ansible for DevOps - Ansible Book by Jeff Geerling - Still one of the best sources out there on learning Ansible IMO. But not directed at RHCE specifically.

To Review#

How do I list all of the modules ansible-doc can find?

ansible-doc -l

How do I initialize a new role with directory scaffolding?

# ??

How do I flush handlers in case I want to run them before all tasks have completed?

meta ??

How do I trigger multiple handlers without needing to notify a list of them?

handlers:
??
listen: "Name of handlers to trigger"

How do I list all running processes with additional information?

ps -ef

What meta package do I need to install that provides access to commands like podman and other related utilities?

dnf install container-tools

How do I search for roles or collections using commands available in ansible-core?

ansible-galaxy search NAME

How do I list available collections using an ansible execution environment?

ansible-navigator collections

How do I run a playbook with ansible-navigator?

ansible-navigator -m stdout run playbook.yml

How do I get a list of available nfs mounts exported from a server?

showmount -e nfsserver.example.com

What 3 services do I need to allow in firewalld in order to allow NFS exports?

nfs rpc-bind mountd

How do I mount and iso?

# It helps to let mount auto-detect fstype, opts, etc
[root@control ~]# mount /dev/sr0 /repo
mount: /repo: WARNING: source write-protected, mounted read-only.
# Then show them...
[root@control ~]# findmnt /repo
TARGET SOURCE   FSTYPE  OPTIONS
/repo  /dev/sr0 iso9660 ro,relatime,nojoliet,check=s,map=n,blocksize=2048
# add mount to /etc/fstab
[root@control ~]# grep iso /etc/fstab
/dev/sr0        /repo   iso9660 defaults        0 0
[root@control ~]# mount -va
/                        : ignored
/boot                    : already mounted
none                     : ignored
mount: /repo: WARNING: source write-protected, mounted read-only.
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
/repo                    : successfully mounted

How do I add a repo from a file (commonly from iso)?

[root@control ~]# ll /repo
total 45
drwxr-xr-x. 1 root root  2048 Apr  9 00:05 AppStream
drwxr-xr-x. 1 root root  2048 Apr  9 00:05 BaseOS
drwxrwxr-x. 1 root root  2048 Apr  8 23:13 EFI
-r--r--r--. 1 root root  8154 Apr  8 23:05 EULA
-r--r--r--. 1 root root  2135 Apr  9 00:05 extra_files.json
-r--r--r--. 1 root root 18092 Apr  8 23:05 GPL
drwxrwxr-x. 1 root root  2048 Apr  8 23:13 images
drwxrwxr-x. 1 root root  2048 Apr  8 23:13 isolinux
-r--r--r--. 1 root root   103 Apr  9 00:05 media.repo
-r--r--r--. 1 root root  1669 Apr  8 23:05 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  3682 Apr  8 23:05 RPM-GPG-KEY-redhat-release
[root@control ~]# dnf config-manager --add-repo=file:///repo/BaseOS
Adding repo from: file:///repo/BaseOS
[root@control ~]# dnf config-manager --add-repo=file:///repo/AppStream
Adding repo from: file:///repo/AppStream
# Then disable gpgcheck
[root@control ~]# cd /etc/yum.repos.d/
[root@control yum.repos.d]# ll
total 20
-rw-r--r--. 1 root root 1498 Jan 10  2024 epel.repo.rpmsave
-rw-r--r--. 1 root root 1648 Jan 10  2024 epel-testing.repo.rpmsave
-rw-r--r--. 1 root root  358 Jan 10  2024 redhat.repo
-rw-r--r--. 1 root root  121 Sep  1 18:31 repo_AppStream.repo
-rw-r--r--. 1 root root  112 Sep  1 18:29 repo_BaseOS.repo
[root@control yum.repos.d]# vim repo_AppStream.repo 
[root@control yum.repos.d]# vim repo_BaseOS.repo 
[root@control yum.repos.d]# grep -r gpgcheck .
./repo_AppStream.repo:gpgcheck=0
./repo_BaseOS.repo:gpgcheck=0
# Verify availability with repolist
[root@control yum.repos.d]# dnf repolist
repo id                      repo name
repo_AppStream               created by dnf config-manager from file:///repo/AppStream
repo_BaseOS                  created by dnf config-manager from file:///repo/BaseOS

How do I get a list of available services in firewalld?

firewall-cmd --get-services

What boolean do I need to set to allow anonomous ftp access?

setsebool -P ftpd_full_access on

template Module#

Likely there won't be a way to access Jinja2 docs on the exam, need to review my syntax for building Jinja templates and installing them with the template module.