Red Hat Ansible Automation (EX294)

 39,00

Bereid je voor op het EX294-examen: Red Hat Certified Engineer (RHCE) met Ansible Automation Platform. Leer playbooks schrijven, rollen beheren en systemen op schaal configureren.

Artikelnummer: CERTFORGE-EX294 Categorie:

Beschrijving

De Red Hat Certified Engineer (RHCE) met Ansible-focus is een van de meest gevraagde certificeringen in de DevOps- en Linux-wereld. Dit examen valideert dat je Ansible kunt inzetten om systemen op schaal te configureren en te beheren.

Wat leer je in deze cursus?

  • Ansible Automation Platform installeren en configureren
  • Inventory-bestanden en host-patronen schrijven
  • Ad-hoc commando’s uitvoeren met ansible
  • Playbooks schrijven met taken, variabelen en handlers
  • Rollen (roles) structureren en hergebruiken via Ansible Galaxy
  • Jinja2-templates inzetten voor dynamische configuratiebestanden
  • Ansible Vault gebruiken voor wachtwoorden en geheime variabelen
  • Systemen beheren: gebruikers, pakketten, services, cron en SELinux
  • Storage configureren: partities, LVM en bestandssystemen
  • Netwerkconfiguratie automatiseren

Examenformaat EX294

Het EX294-examen is een praktijkexamen van 4 uur waarbij je live in een Red Hat-omgeving werkt. Er zijn geen multiple-choice vragen — alles moet werkend opgeleverd worden. Je hebt toegang tot de man-pages en Red Hat-documentatie.

Onderdeel Gewicht
Ansible-basistaken 20%
Playbooks en rollen 35%
Systeemconfiguratie 25%
Ansible Vault & templates 20%

Voor wie is deze cursus?

Deze cursus is geschikt voor Linux-beheerders en DevOps-engineers die al ervaring hebben met de basis van Linux (RHCSA-niveau). Kennis van de commandoregel en basisscripting is een pré.

Wat zit er in het pakket?

  • 60 realistische oefenvragen met foutenanalyse
  • Uitgebreide uitleg bij elk antwoord
  • Cheatsheets: Ansible-module referentie
  • 180 dagen toegang
  • BTW-factuur op aanvraag

Wat leer je in EX294?

Het EX294-examen test of je Ansible kunt gebruiken om systemen op schaal te configureren en te beheren. Je schrijft playbooks, maakt rollen, gebruikt Vault en werkt met een inventorysysteem. Het examen is volledig hands-on — geen meerkeuze.

Studietijd: ~40 uur. Slagingspercentage: 70% van de beschikbare punten.


1. Ansible-basisprincipes

Hoe werkt Ansible?

Ansible is agentless — op de managed nodes hoeft niets geïnstalleerd te worden. De control node verbindt via SSH en voert Python-code uit. Taken zijn idempotent: ze controleren eerst de huidige toestand en maken alleen wijzigingen als dat nodig is.

Configuratie en inventory

# ansible.cfg (in de projectdirectory)

[defaults]

inventory = inventory/hosts remote_user = ansible private_key_file = ~/.ssh/id_rsa

[privilege_escalation]

become = true become_method = sudo become_user = root

# inventory/hosts (INI-formaat)

[webservers]

web1.example.com web2.example.com

[databases]

db1.example.com

[productie:children]

webservers databases # Host-variabelen web1.example.com ansible_user=admin ansible_port=2222

Essentiële opdrachten

# Verbinding testen
ansible all -m ping

# Ad-hoc commando uitvoeren
ansible webservers -m shell -a "uptime"

# Playbook uitvoeren
ansible-playbook playbook.yml

# Dry-run (geen wijzigingen)
ansible-playbook playbook.yml --check

# Dry-run met diff
ansible-playbook playbook.yml --check --diff

# Verbose output
ansible-playbook playbook.yml -v    # basis
ansible-playbook playbook.yml -vvv  # verbinding debug

# Beperken tot één host
ansible-playbook playbook.yml --limit web1.example.com

# Specifieke tags uitvoeren
ansible-playbook playbook.yml --tags installatie

2. Playbooks schrijven

Playbook-structuur

---
- name: Webserver configureren
  hosts: webservers
  become: yes
  vars:
    http_poort: 80
    max_clients: 200

  tasks:
    - name: Apache installeren
      ansible.builtin.dnf:
        name: httpd
        state: present

    - name: Apache starten en inschakelen
      ansible.builtin.systemd:
        name: httpd
        state: started
        enabled: yes

    - name: Configuratie deployen
      ansible.builtin.template:
        src: httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
      notify: Herstart Apache

  handlers:
    - name: Herstart Apache
      ansible.builtin.systemd:
        name: httpd
        state: restarted

Condities en loops

# Conditie
- name: Pakket installeren op RHEL
  ansible.builtin.dnf:
    name: httpd
    state: present
  when: ansible_os_family == "RedHat"

# Loop over een lijst
- name: Gebruikers aanmaken
  ansible.builtin.user:
    name: "{{ item }}"
    state: present
  loop:
    - alice
    - bob
    - charlie

# Loop met dictionary
- name: Services beheren
  ansible.builtin.systemd:
    name: "{{ item.naam }}"
    state: "{{ item.status }}"
  loop:
    - { naam: httpd, status: started }
    - { naam: firewalld, status: started }

Variabelen en facts

# Variabele definiëren en gebruiken
vars:
  app_map: /opt/myapp

tasks:
  - name: Directory aanmaken
    ansible.builtin.file:
      path: "{{ app_map }}"
      state: directory

# Output opslaan
  - name: Huidige datum ophalen
    ansible.builtin.command: date
    register: datum_output

  - name: Datum tonen
    ansible.builtin.debug:
      msg: "Datum: {{ datum_output.stdout }}"

# Custom fact instellen
  - name: Fact instellen
    ansible.builtin.set_fact:
      app_versie: "2.5.1"

Foutafhandeling

# Doorgaan bij fout
- name: Optionele taak
  ansible.builtin.command: /opt/optioneel.sh
  ignore_errors: yes

# Block met rescue
- block:
    - name: Risicovolle taak
      ansible.builtin.command: /opt/update.sh

  rescue:
    - name: Herstelactie
      ansible.builtin.command: /opt/rollback.sh

  always:
    - name: Altijd uitvoeren
      ansible.builtin.debug:
        msg: "Taak voltooid"

3. Rollen

Rolstructuur

mijn-rol/
├── tasks/
│   └── main.yml       # Hoofdtaken
├── handlers/
│   └── main.yml       # Handlers
├── templates/
│   └── config.j2      # Jinja2-templates
├── files/
│   └── script.sh      # Statische bestanden
├── vars/
│   └── main.yml       # Vaste variabelen (hoge prioriteit)
├── defaults/
│   └── main.yml       # Standaardwaarden (laagste prioriteit)
└── meta/
    └── main.yml       # Afhankelijkheden
# Rol aanmaken
ansible-galaxy role init mijn-rol

# Rol vanuit Galaxy installeren
ansible-galaxy role install geerlingguy.apache

# Rol in playbook gebruiken
- name: Servers configureren
  hosts: webservers
  roles:
    - mijn-rol
    - { role: geerlingguy.apache, tags: [apache] }

requirements.yml

---
roles:
  - name: geerlingguy.apache
    version: "3.2.0"
  - src: https://github.com/voorbeeld/rol

collections:
  - name: ansible.posix
    version: ">=1.4.0"
# Installeren vanuit requirements.yml
ansible-galaxy install -r requirements.yml

4. Jinja2-templates

# templates/httpd.conf.j2
ServerName {{ ansible_hostname }}
Listen {{ http_poort }}
MaxClients {{ max_clients }}

{% if ssl_ingeschakeld %}
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
{% endif %}

{% for vhost in virtuele_hosts %}
<VirtualHost *:80>
    ServerName {{ vhost.naam }}
    DocumentRoot {{ vhost.pad }}
</VirtualHost>
{% endfor %}

Veelgebruikte filters

{{ tekst | upper }}              # HOOFDLETTERS
{{ tekst | lower }}              # kleine letters
{{ lijst | length }}             # aantal elementen
{{ waarde | default('leeg') }}   # standaardwaarde
{{ lijst | join(', ') }}         # lijst naar string
{{ string | trim }}              # whitespace verwijderen
{{ getal | int }}                # naar integer converteren

5. Ansible Vault

# Nieuw versleuteld bestand aanmaken
ansible-vault create geheimen.yml

# Bestaand bestand versleutelen
ansible-vault encrypt vars/wachtwoorden.yml

# Versleuteld bestand bekijken
ansible-vault view vars/wachtwoorden.yml

# Versleuteld bestand bewerken
ansible-vault edit vars/wachtwoorden.yml

# Wachtwoord wijzigen
ansible-vault rekey vars/wachtwoorden.yml

# Bestand ontsleutelen
ansible-vault decrypt vars/wachtwoorden.yml

# Enkele string versleutelen
ansible-vault encrypt_string 'MijnGeheim' --name 'db_wachtwoord'

# Playbook uitvoeren met vault
ansible-playbook playbook.yml --ask-vault-pass

# Met wachtwoordbestand
ansible-playbook playbook.yml --vault-password-file .vault_pass

Vault in variabelen gebruiken

# vars/geheimen.yml (na "ansible-vault create")
db_wachtwoord: SuperGeheim123
api_sleutel: abc123xyz

# In playbook
vars_files:
  - vars/geheimen.yml

tasks:
  - name: Database configureren
    ansible.builtin.template:
      src: db.conf.j2
      dest: /etc/app/db.conf

6. Veelgebruikte modules

# Pakket installeren
ansible.builtin.dnf:
  name: [httpd, php, php-mysql]
  state: present

# Bestand kopiëren
ansible.builtin.copy:
  src: bestanden/app.conf
  dest: /etc/app/app.conf
  owner: root
  group: root
  mode: '0644'

# Regel in bestand aanpassen
ansible.builtin.lineinfile:
  path: /etc/ssh/sshd_config
  regexp: '^PermitRootLogin'
  line: 'PermitRootLogin no'

# Directory aanmaken
ansible.builtin.file:
  path: /opt/myapp/logs
  state: directory
  mode: '0755'
  owner: app
  group: app

# Gebruiker aanmaken
ansible.builtin.user:
  name: deploy
  groups: wheel
  shell: /bin/bash
  create_home: yes

# Firewall-poort openen (RHEL)
ansible.posix.firewalld:
  port: 8080/tcp
  permanent: yes
  state: enabled
  immediate: yes

# Host herstarten en wachten
ansible.builtin.reboot:
  reboot_timeout: 300

Officiële documentatie

Tip: maak tijdens het examen altijd gebruik van ansible-doc voor module-documentatie: ansible-doc ansible.builtin.dnf

Beoordelingen

Er zijn nog geen beoordelingen.

Enkel ingelogde klanten die dit product gekocht hebben, kunnen een beoordeling schrijven.