Courseiva
Back to Red Hat Certified Engineer EX294 questions

Scenario-based practice

Refer to the Exhibit Practice Questions

Practise Red Hat Certified Engineer EX294 practice questions — original exam-style scenarios covering every exam domain, with detailed explanations, wrong-answer analysis, and common exam traps.

15
scenario questions
EX294
exam code
Red Hat
vendor

Scenario guide

How to approach refer to the exhibit practice questions

Practise exhibit-style questions that ask you to read a topology, table, command output or diagram before choosing the best answer.

Quick answer

Exhibit-style questions test whether you can read a topology, command output, diagram or table before choosing the best answer.

How to extract the relevant detail from an exhibit.

How topology, command output or routing information affects the answer.

How to avoid answering from memory before reading the evidence.

How to map the exhibit back to the exam objective.

Related practice questions

Related EX294 topic practice pages

Scenario questions usually connect to one or more exam topics. Use these links to review the underlying concepts behind the scenario.

Practice set

Practice scenarios

Question 1mediummultiple choice
Read the full Ansible explanation →

Refer to the exhibit. The playbook uses serial: 1 (one host at a time). The update failed on web3.example.com. Based on the output, what is the most likely reason the play did not abort the rollout and how should the playbook be modified to stop on failure?

Exhibit

Refer to the exhibit.

PLAY [Update web servers] ********************************************************

TASK [Gathering Facts] *********************************************************
ok: [web1.example.com]
ok: [web2.example.com]
ok: [web3.example.com]

TASK [Update Apache config] ****************************************************
changed: [web1.example.com] => {
    "changed": true,
    "msg": "Config updated"
}
changed: [web2.example.com] => {
    "changed": true,
    "msg": "Config updated"
}
failed: [web3.example.com] => {
    "changed": false,
    "msg": "Permission denied"
}

TASK [Restart Apache] **********************************************************
ok: [web1.example.com] => {
    "changed": true,
    "msg": "Service restarted"
}
ok: [web2.example.com] => {
    "changed": true,
    "msg": "Service restarted"
}
skipping: [web3.example.com]

PLAY RECAP *********************************************************************
web1.example.com : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
web2.example.com : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
web3.example.com : ok=1    changed=0    unreachable=0    failed=1    skipped=1    rescued=0    ignored=0
Question 2hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. An Ansible playbook targeting server1 fails with a permissions error when connecting. The administrator notices the SSH private key is being used. Which change will likely fix the issue?

Network Topology
# ansible-navigator inventorylist"all": {"hosts": {"server1": {"ansible_host": "10.0.0.1","ansible_user": "centos","ansible_ssh_private_key_file": "/home/centos/.ssh/id_rsa"},"vars": {"ansible_ssh_common_args": "-o StrictHostKeyChecking=no"
Question 3hardmultiple choice
Full question →

Refer to the exhibit. The administrator observes the output and is concerned because the 'Check on async job' task shows 'finished: 0'. What does this indicate?

Exhibit

TASK [Start long running process] *************************
changed: [host1]
ASYNC POLL on host1: jid=j1234567890 started, poll=0
TASK [Check on async job] *********************************
ok: [host1] => {
    "ansible_job_id": "j1234567890",
    "finished": 0,
    "started": 1
}
Question 4easymultiple choice
Full question →

Refer to the exhibit. What is the purpose of the 'failed_when' condition?

Exhibit

- name: Check if package is installed
  command: rpm -q httpd
  register: result
  failed_when: result.rc != 0 and 'not installed' not in result.stderr
  changed_when: false
Question 5hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. An administrator runs an Ansible playbook and gets an unreachable error. The administrator has set ansible.cfg as shown. Which configuration change would most likely resolve the issue?

Exhibit

[root@controller ~]# cat ansible.cfg
[defaults]
inventory = /path/to/inventory
remote_user = ansible
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = true

[root@controller ~]# cat playbook.yml
---
- hosts: webservers
  tasks:
    - name: Install httpd
      yum:
        name: httpd
        state: present

[root@controller ~]# ansible-playbook -i inventory.ini playbook.yml
SSH password: 
SUDO password[defaults to SSH password]: 

PLAY [webservers] ********************************************************

TASK [Gathering Facts] ***************************************************
fatal: [server1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}
Question 6hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. A playbook fails with the error 'file not found: /var/www/app-v2.1.0.tar.gz' on the control node. What is the most likely cause?

Exhibit

---
- name: Deploy web app
  hosts: webservers
  become: yes
  vars:
    app_version: "2.1.0"
  tasks:
    - name: Install Apache
      yum:
        name: httpd
        state: latest
    - name: Deploy application
      copy:
        src: /var/www/app-v{{ app_version }}.tar.gz
        dest: /var/www/html/app.tar.gz
    - name: Extract archive
      unarchive:
        src: /var/www/html/app.tar.gz
        dest: /var/www/html/
        remote_src: yes
    - name: Start Apache
      service:
        name: httpd
        state: started
Question 7mediummultiple choice
Read the full Ansible explanation →

Refer to the exhibit. A role 'timezone' sets the timezone twice to different values. The role also depends on 'ntp'. After running a playbook that applies this role to server1, what is the timezone on server1?

Exhibit

[root@controller ~]# cat roles/timezone/tasks/main.yml
---
- name: Set timezone to UTC
  timezone:
    name: UTC

- name: Set timezone to America/New_York
  timezone:
    name: America/New_York

[root@controller ~]# cat roles/timezone/meta/main.yml
---
dependencies:
  - role: ntp

[root@controller ~]# ansible-playbook -i inventory.ini site.yml

PLAY [all] ***************************************************************

TASK [timezone : Set timezone to UTC] ************************************
changed: [server1]

TASK [timezone : Set timezone to America/New_York] ***********************
changed: [server1]

An admin attempts to build an execution environment using the exhibited files. The build fails with an error about incompatible Python dependency. What is the most likely cause?

Exhibit

Refer to the exhibit.

$ cat execution-environment.yml
---
version: 1
build_arg_defaults:
  EE_BASE_IMAGE: 'registry.redhat.io/ansible-automation-platform-21/ee-minimal-rhel8:latest'
dependencies:
  galaxy: requirements.yml
  python: requirements.txt

$ cat requirements.yml
---
collections:
  - name: redhat.insights
  - name: community.general

$ cat requirements.txt
ansible==2.9.27
Question 9easymultiple choice
Read the full Ansible explanation →

Refer to the exhibit. A playbook includes this vars file and runs `systemctl restart httpd`. The playbook fails because it cannot decrypt the vault. Which of the following is the most likely cause?

Exhibit

# vars/main.yml
db_password: !vault |
  $ANSIBLE_VAULT;1.1;AES256
  62616133626435323435303036383837623839646538646134313734326438
  32336262656134333766346133343462663230663738636261343861336662
  0a3532666463313035616265643237343763366261666338663462643761
  3733
Question 10mediummultiple choice
Full question →

Refer to the exhibit. A user includes this in the execution-environment.yml. The build process fails because the second collection cannot be resolved. What is the most likely reason?

Exhibit

collections:
  - name: namespace.collection
    version: ">=1.0.0,<2.0.0"
  - name: other.collection
    source: https://internal.galaxy.example.com/api/
Question 11mediummultiple choice
Full question →

Based on the exhibit, what is the purpose of the `galaxy` dependency entry?

Exhibit

Refer to the exhibit.

```yaml
# execution-environment.yml
---
version: 1
build_arg_defaults:
  EE_BASE_IMAGE: 'registry.redhat.io/ansible-automation-platform/ansible-builder-rhel8:latest'
dependencies:
  galaxy: requirements.yml
  python: requirements.txt
  system: bindep.txt
```
Question 12hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. The playbook fails because the httpd package is not found. Which is the most likely cause?

Network Topology
# ansible-playbook playbooks/deploy.ymlsyntax-check# cat ansible.cfg[defaults]host_key_checking = Falseinventory = inventory.ini# cat roles/webserver/tasks/main.yml- name: Install httpdyum:name: httpdstate: present- name: Start httpdservice:state: startedenabled: yes# cat playbooks/deploy.yml- hosts: webserversroles:- webserverplaybook: playbooks/deploy.ymlPLAY [webservers] **************************************************************TASK [Gathering Facts] *********************************************************ok: [web1]
Question 13hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. The playbook fails with an error about the package list. What is the issue?

Exhibit

# cat vars.yml
---
packages:
  - httpd
  - mariadb-server
  - php

# cat playbook.yml
- hosts: all
  vars_files:
    - vars.yml
  tasks:
    - name: Install packages
      yum:
        name: "{{ packages }}"
        state: present
      become: yes

# ansible-playbook playbook.yml

PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [server1]
TASK [Install packages] ********************************************************
fatal: [server1]: FAILED! => {"changed": false, "msg": "This module requires a list of package names or a comma-separated string.", "results": []}
Question 14hardmultiple choice
Full question →

Based on the exhibit, which collection provides modules for managing Red Hat Insights subscriptions?

Exhibit

Refer to the exhibit.

```
$ ansible-galaxy collection list

# /home/user/.ansible/collections/ansible_collections
Collection                   Version
---------------------------- -------
community.general             5.0.0
redhat.insights               1.0.0
ansible.posix                 1.3.0
```
Question 15hardmultiple choice
Read the full Ansible explanation →

Refer to the exhibit. After the playbook run fails on the 'Verify config' task, what happens to the 'restart service' handler?

Exhibit

# cat tasks/main.yml
- name: Create config
  template:
    src: config.j2
    dest: /etc/config.cfg
  notify: restart service

- name: Verify config
  command: /usr/local/bin/validate /etc/config.cfg
  changed_when: false

# cat handlers/main.yml
- name: restart service
  service:
    name: myapp
    state: restarted

# ansible-playbook site.yml
PLAY [all] *********************************************************************
TASK [Create config] ***********************************************************
changed: [host1]
TASK [Verify config] ***********************************************************
fatal: [host1]: FAILED! => {"changed": false, "msg": "Validation failed", "rc": 1}

These EX294 practice questions are part of Courseiva's free Red Hat certification practice question bank. Courseiva provides original exam-style EX294 questions with detailed explanations, topic-based practice, mock exams, readiness tracking, and study analytics.