Courseiva
EX294Chapter 1 of 18Objective 1.1

Introduction to Ansible and the EX294 Exam

Ansible is a tool that automates the setup, configuration, and management of computer servers. Instead of logging into each machine one by one to type commands, you write a single instruction file that Ansible runs across hundreds of servers at once. For the EX294 exam, understanding what Ansible is and why it exists is the first step toward mastering the practical tasks you will be tested on.

12 min read
Beginner
Updated Jul 23, 2026
Editorial oversight: Johnson Ajibi· Security Systems Architect · MSc IT Security · IEEE Senior Member

A simple way to picture Introduction to Ansible and the EX294 Exam

The Personal Chef's Recipe Book Analogy

A personal chef's recipe book is the central tool for managing a client's kitchen. The chef does not cook by guesswork. Every dish has a file card: one for the client's favourite lasagne, another for a quick lemon chicken, and a third for holiday cookies. Each card lists ingredients, tools, and step-by-step instructions. When the client requests lasagne next Tuesday, the chef pulls the lasagne card, reads it from top to bottom, and executes it exactly. No creativity, no improvisation — just precise repetition of the proven plan.

Now imagine the chef manages ten clients. Each client has a different favourite menu. Without the recipe book, the chef would have to memorise thirty separate procedures, cook from memory, and risk using the wrong spice for the wrong client. Ansible is that recipe book, but for computer servers instead of stoves. The "recipe cards" are called playbooks. The "ingredients" are software packages, configuration files, and network settings. The "clients" are servers. When a system administrator wants to set up a web server, they do not log in and type commands by heart. They write a playbook once and run it on ten, a hundred, or a thousand machines. Ansible makes every run identical, just like the chef's recipe guarantees every lasagne tastes the same. The EX294 exam tests whether you can write and read those playbooks — whether you can be that reliable chef.

A single mistaken ingredient in a recipe spoils the dish for every guest. A single mistake in an Ansible playbook crashes every server. The recipe book removes guesswork, ensures consistency, and saves hours of manual labour. That is the core value Ansible brings, and that is the foundation of the EX294 exam.

How It Actually Works

Ansible is an open-source automation engine. It was created by Michael DeHaan in 2012 and later acquired by Red Hat, the same company that backs Red Hat Enterprise Linux (RHEL). The word "automation" means making a process happen without human intervention at each step. Before Ansible, system administrators (the people who keep servers running) had to connect to each server individually using a tool like SSH (Secure Shell) — a protocol for securely logging into a remote computer. They would type commands like yum install nginx to install a web server or systemctl restart httpd to restart a service. Doing this for fifty servers meant fifty logins, fifty sets of typing, and fifty chances to make a typo.

Ansible replaces that manual process with playbooks. A playbook is a plain-text file written in YAML (YAML Ain't Markup Language), a human-readable data format that uses indentation to organise information. In a playbook, you describe what the end state of the server should look like. For example, "the web server software 'nginx' must be installed" or "the firewall must allow traffic on port 80." Ansible reads the playbook, connects to the target servers over SSH, and makes the changes necessary to reach that state. It does not matter if you have one server or one thousand — Ansible runs the same playbook in parallel.

Ansible uses a push model. The control node (your laptop or a dedicated server) holds the playbooks and uses SSH to push commands to managed nodes (the servers being automated). There is no agent software required on the managed nodes. The machines just need Python (a programming language) installed, which almost all Linux servers have by default. This lack of an agent is a key advantage because it reduces complexity and security risk — you do not need to install and maintain extra software on every server.

Why does this matter for someone studying EX294? Red Hat certifies system administrators who can use Ansible to solve real-world problems at scale. The exam objectives cover how to write playbooks, use variables (placeholders for values that change), manage templates (files that adapt based on variables), apply roles (reusable collections of playbooks and files), and handle common modules (pre-built pieces of code for specific tasks like copying a file or restarting a service).

Ansible is not the only automation tool. Competitors include Puppet, Chef, and SaltStack. What distinguishes Ansible is its simplicity. Puppet and Chef require you to learn a domain-specific language (DSL) — a custom programming syntax for their own universe. Ansible uses YAML, which most people can read after a few minutes of practice. Ansible also does not require a central server to manage everything; you can run playbooks from your laptop. This low barrier to entry makes it the go-to tool for many organisations.

The EX294 exam does not ask you to explain Ansible's history or compare it to Puppet. It tests your ability to use Ansible in practical scenarios. You will be given a set of tasks — install software, create users, copy configuration files, start services — and you must write playbooks that achieve those tasks. The exam environment uses a set of virtual machines. You connect to the control node, write your playbooks, and run them against the other machines. The exam uses a real RHEL environment, so you must be comfortable with Linux commands as well. The "Introduction" chapter of Courseiva sets the stage: you are learning a tool that automates boring, repetitive work, and you are doing it to pass a certification that proves you can manage servers at scale.

Ansible architecture: a control node uses an inventory and a playbook to push configurations via SSH to multiple managed nodes.

Walk-Through

1

Install Ansible on the Control Node

On a Red Hat Enterprise Linux machine, you run `sudo dnf install ansible-core`. This installs the minimal set of tools needed to write and run playbooks. The control node is your automation hub — every playbook is written and executed from here.

2

Create an Inventory File

Write a plain-text file (e.g., `inventory.ini`) listing the IP addresses or hostnames of the servers you want to manage. Group them using square brackets: `[webservers]`, `[dbservers]`. The inventory tells Ansible which machines to target.

3

Write a Simple Playbook

Create a YAML file (e.g., `first_playbook.yml`). Start with three dashes `---`. Define a play: specify the hosts (e.g., `webservers`), set `become: yes` for root access, then list tasks under `tasks`. Each task has a `name` and a module call.

4

Run the Playbook

Execute the playbook with `ansible-playbook -i inventory.ini first_playbook.yml`. Ansible connects to the managed nodes over SSH, runs the tasks, and prints a summary (changed, failed, ok). Review the output to ensure everything worked.

5

Test for Idempotency

Run the same playbook a second time. A well-written playbook should show zero 'changed' tasks the second time because the system is already in the desired state. If tasks still report 'changed', something is wrong — the playbook is not idempotent.

6

Use ansible-doc to Explore Modules

Run `ansible-doc -l` to list all available modules. Then `ansible-doc <module_name>` to read its documentation, see examples, and learn required parameters. This is your reference manual during the exam and in real work.

7

Practise with the Lab Environment

Red Hat provides a lab setup with multiple VMs. Practise connecting, writing inventory, writing playbooks, and running them against different host groups. Repeat until you can complete a full task (install Apache, set config, start service) in under five minutes.

What This Looks Like on the Job

Consider a real company called MediConnect, a healthcare startup that hosts patient portal software. They have thirty servers running RHEL 9: ten web servers, ten application servers, and ten database servers. Everything was set up manually by the original engineer, who left the company six months ago. Now the new system administrator, Priya, needs to complete three tasks:

Apply the latest security patches to all thirty servers.

Configure all web servers to use a new SSL certificate (a file that enables HTTPS encryption).

Create a standard user account called 'monitor' on every server for the monitoring tool.

Without Ansible, Priya would SSH into each server, which means logging in thirty times. She would type sudo dnf update -y on each, scp the certificate file to each web server, edit the Nginx config file on each web server, and then run useradd monitor thirty times. The whole process would take three to four hours, and every typo could break a server.

With Ansible, Priya does the following:

1. She installs Ansible on her laptop (the control node) using dnf install ansible-core. 2. She creates a file called inventory.ini that lists all thirty IP addresses, grouped by function: [webservers] 10.0.1.1 10.0.1.2 ... [appservers] ... [dbservers] ... 3. She writes a playbook called patch.yml that uses the dnf module (a piece of Ansible code that manages packages) to update all packages: ansible.builtin.dnf: name="*" state=latest. 4. She writes a second playbook for the SSL certificate. It uses the copy module to transfer the certificate file and the template module to update the Nginx config file with the new certificate path. 5. She writes a third playbook to create the monitor user using the user module: ansible.builtin.user: name=monitor state=present. 6. Priya runs all three playbooks with one command: ansible-playbook -i inventory.ini patch.yml ssl_cert.yml create_user.yml.

The whole operation takes ten minutes. Ansible connects to all thirty servers in parallel, applies the changes, and returns a report showing which servers succeeded and which failed. Priya can go home early, and MediConnect's systems are patched and compliant.

In a real-world environment, playbooks are stored in version control (like Git) so changes are tracked and reversible. Teams use Ansible Tower or AWX (web-based interfaces for Ansible) to schedule runs and manage permissions. But at its core, the workflow is the same: describe the desired state, push the playbook, let Ansible do the work. The EX294 exam simulates this exact workflow using command-line Ansible and a cluster of preconfigured VMs. You write playbooks, run them, and they must work correctly on the first try.

How EX294 Actually Tests This

The EX294 exam tests practical Ansible skills. There is no multiple-choice section asking about Ansible's history. The exam is performance-based: you are given a set of tasks and a lab environment, and you must complete those tasks. For the topic covered in this chapter ("Understand the purpose and scope of the EX294 exam and the role of Ansible in automation"), the exam expects you to know:

What Ansible is: an automation tool for configuration management, application deployment, and task automation.

The push model: Ansible connects to managed nodes via SSH and pushes configs.

Agentless architecture: no extra software is needed on managed nodes.

YAML syntax: the language playbooks are written in.

Modules: pre-built units of work (e.g., copy, user, dnf, service, yum).

Inventory: a file that lists which hosts Ansible manages.

Playbooks: the YAML files that define automation tasks.

The exam does not directly ask "What is the purpose of Ansible?" but it tests this knowledge indirectly. For example, you might be asked to "Use the yum module to ensure the 'httpd' package is installed." Understanding that yum is a module and that you use it inside a playbook is essential.

Common traps in the exam:

Forgetting to use the correct module name. For example, using yum instead of ansible.builtin.yum. The exam uses the fully qualified collection name (FQCN) style, like ansible.builtin.yum.

Misindenting YAML. Ansible is picky about spaces. Two-space indentation is required. Four spaces, tabs, or inconsistent indent will cause a syntax error.

Using the wrong state parameter. For example, state=present installs a package, state=latest upgrades it. Using state=installed fails because that is not a valid value.

Not specifying an inventory file. When running ansible-playbook, you must include -i inventory.ini.

Forgetting to become root. Many tasks require root privileges. You set become: yes in the playbook.

The exam also tests your ability to create a simple Ansible environment from scratch. You will be given a control node and several managed nodes. You must write an inventory file, a playbook, and run it. The grading is automated: the playbook is executed, and the system checks whether the target state is achieved. If your playbook installs Apache but the check finds Apache not running, you fail that task.

Key definitions to memorise:

Control node: the machine where Ansible is installed and from which playbooks are run.

Managed node: the target server being automated.

Inventory: list of managed nodes, often grouped.

Playbook: a YAML file containing one or more plays.

Play: a mapping between a group of hosts and the tasks to run on them.

Task: a single action, such as installing a package or copying a file.

Module: the code that executes a task.

Idempotency: the property that running a playbook multiple times produces the same result. If the system is already in the desired state, Ansible does nothing.

Key Takeaways

Ansible is an agentless automation tool that uses YAML playbooks to configure servers over SSH.

The EX294 exam is a hands-on performance exam, not a multiple-choice test.

Playbooks describe the desired state of a system, and Ansible makes that state true without manual intervention.

Idempotency means running the same playbook twice does not break anything — Ansible only makes changes if the current state does not match the desired state.

You must write an inventory file that lists your managed nodes, grouped by function or other criteria.

Every task in a playbook uses a module, such as `ansible.builtin.copy` for files or `ansible.builtin.dnf` for packages.

YAML is space-sensitive: use two spaces per indent level, never tabs.

The control node is the machine where Ansible is installed; managed nodes only need SSH and Python.

The `become: yes` directive in a playbook allows Ansible to execute tasks with root privileges.

Understanding Ansible's role in automation — replacing repetitive manual SSH sessions — is the foundation of the whole exam.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

Ansible

Agentless — no software on managed nodes

Uses YAML for playbooks

Push model — control node initiates changes

Puppet

Requires an agent on each managed node

Uses its own Puppet DSL language

Pull model — agents check a central server periodically

Playbook

A YAML file with multiple tasks

Reusable and version-controlled

Ideal for complex, multi-step automation

Ad-hoc Command

A single `ansible` CLI command like `ansible all -m ping`

Not reusable without copy-pasting

Best for quick one-off checks or simple actions

Control Node

Runs Ansible software

Stores playbooks, inventory, and modules

Connects TO managed nodes via SSH

Managed Node

Does not run Ansible software

Only needs SSH and Python installed

Receives connections FROM the control node

Watch Out for These

Mistake

Ansible is a programming language I need to learn from scratch.

Correct

Ansible uses YAML, which is not a programming language but a data format. You write simple instructions, not complex code. If you can write a grocery list, you can write a playbook.

YAML looks like markup, so beginners assume it is as hard as Python or Java. In reality, learning the specific keys (name, hosts, tasks, become) takes a few minutes.

Mistake

Ansible requires installing an agent on every server I want to manage.

Correct

Ansible is agentless. It connects over SSH and does not need any software installed on the managed nodes, except Python (which is already on almost all Linux servers).

Many automation tools like Puppet and Chef require agents. The word 'agentless' is often misunderstood as 'no software needed at all', but the control node still needs Ansible installed.

Mistake

Ansible playbooks only work on Red Hat Enterprise Linux.

Correct

Ansible works on any Linux distribution (Ubuntu, Debian, CentOS, Fedora) and also on Windows (via WinRM), macOS, and network devices. Red Hat certifies on RHEL, but the tool is cross-platform.

Because the EX294 exam uses RHEL, beginners assume Ansible is RHEL-only. That is like assuming a Toyota mechanic only works on Toyotas — the exam uses that vehicle, but the skill transfers.

Mistake

The EX294 exam is a multiple-choice theory test about Ansible concepts.

Correct

EX294 is a hands-on performance exam. You complete real tasks in a live environment. There are no multiple-choice questions. You must write playbooks and make them work.

Many exams use multiple-choice (CompTIA A+, CCNA), so newcomers expect that format. Red Hat exams are notorious for being practical, and this shocks unprepared candidates.

Mistake

Ansible is only useful for large companies with hundreds of servers.

Correct

Ansible is valuable even for a single server because it documents the setup and makes it reproducible. A home lab user or a small business with a few machines benefits equally.

The 'scale' narrative is so dominant that beginners think automation is pointless for small setups. But automation is as much about eliminating human error as about speed.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

Do I need to know programming to learn Ansible for EX294?

No. Ansible uses YAML, which is a human-readable data format, not a programming language. If you can write a list, you can write a playbook. No loops or conditionals are needed at the basic level.

Is EX294 valid for life?

No. Red Hat certifications are valid for three years. After that, you must retake the exam or pass a newer version (like EX294v9 or EX374) to remain certified.

Can I take the EX294 exam from home?

Yes. Red Hat offers remote proctored exams. You need a quiet room, a webcam, and a stable internet connection. You connect to their lab environment via a browser-based RDP client.

What happens if my playbook has a syntax error?

Ansible will report a YAML syntax error before it runs anything. You fix the indentation or missing quotes and re-run. The exam environment allows unlimited re-runs, but the lab resets every so often, so you cannot linger for hours.

Do I need to memorise all Ansible modules?

No. The exam provides `ansible-doc` on the control node, so you can look up module syntax. You should memorise the most common ones: `copy`, `file`, `user`, `dnf`, `service`, `yum`, `template`, `lineinfile`, and `debug`.

Is the EX294 exam harder than the RHCSA?

Opinions vary. RHCSA (EX200) tests general Linux administration. EX294 adds Ansible-specific knowledge. Many find the Ansible concepts easier to grasp than some Linux internals, but the practical nature is equally demanding.

Terms Worth Knowing

Keep going

You've finished Introduction to Ansible and the EX294 Exam. Continue through the EX294 study guide to build a complete picture of the exam.

Done with this chapter?