WORKSHOP 1: Ansible Setup
Deze workshop laat je vooral kennis maken met de omgeving waarbinnen we Ansible gaan gebruiken. Er wordt ook gezorgd dat de nodige software aanwezig is en de verschillende machines (VM's) toegankelijk zijn.
1. Doelstelling
-
Weten hoe je de labo-omgeving op de private cloud van onze opleiding kan gebruiken.
-
Ansible installeren op de
Ansible Control Host -
Eenvoudige authenticatie voor SSH gebruiken op de verschillende machines.
2. Workshop
De labo-omgeving
Voor deze Ansible workshop maak je gebruik van de private cloudomgeving van onze opleiding, gebaseerd op Apache CloudStack.
Het portaal vind je op https://studentcloud.ikdoeict.be.
Aanmelden doe je met je Odisee-account:
- Gebruikersnaam:
voornaam.familienaam@student.odisee.be - Wachtwoord: je Odisee-wachtwoord
- Domein:
OPO-IAC

Na het aanmelden kom je terecht op het Dashboard met een overzicht van je resources en het linkermenu met Compute, Storage, Network, Images en meer.

Stap 1 - De omgeving deployen
In tegenstelling tot een automatisch catalog-systeem maak je hier elke virtuele machine manueel aan via het CloudStack-portaal. Voor deze workshop heb je 4 VM's nodig: 1 Control Host (Rocky Linux) en 3 Managed Hosts (Ubuntu).
Het netwerk
Er is al een gedeeld netwerk beschikbaar: Ikdoeict Shared Network 01.
Je hoeft dit netwerk niet zelf aan te maken. Je kiest het tijdens het aanmaken van een instance (zie verder).
Je kan het netwerk bekijken via Network → Guest Networks in het linkermenu.
Instances aanmaken
Maak de 4 instances één voor één aan via Compute → Instances → Add Instance (of via de blauwe Create-knop rechtsboven).
De wizard doorloopt meerdere stappen:
Stap 1 – Zone
Kies Zone-ikdoeict.
Stap 2 – Image
Kies als type Template. Klik op het gewenste besturingssysteem en selecteer de bijhorende template:
| VM | OS-filter | Template |
|---|---|---|
| Control Host | Rocky Linux | Rocky 9.6 template ikdoeict |
| Node 1, 2, 3 | Ubuntu | Ubuntu 24.04 Server template ikdoeict |

Stap 3 – Compute Offering
Kies IaC - ikdoeict (4 CPU - 4GB Mem).
Stap 5 - Netwerk
Kies Ikdoeict Shared Network 01.
Stap 8 – Details
Geef de instance een naam volgens onderstaande naamgeving. Laat de Start Instance-toggle uitgeschakeld — je start de instance na het aanmaken manueel op via Compute → Instances → [instance] → Start.

Naamgeving en credentials per instance:
| Naam instance | Template | Credentials |
|---|---|---|
IaC-Ansible-WS-ControlHost-FamilienaamVoornaam | Rocky 9.6 template ikdoeict | student/student |
IaC-Ansible-WS-Node1-FamilienaamVoornaam | Ubuntu 24.04 Server template ikdoeict | ubuntu/Azerty123 |
IaC-Ansible-WS-Node2-FamilienaamVoornaam | Ubuntu 24.04 Server template ikdoeict | ubuntu/Azerty123 |
IaC-Ansible-WS-Node3-FamilienaamVoornaam | Ubuntu 24.04 Server template ikdoeict | ubuntu/Azerty123 |
De gebruikers in bovenstaande tabel hebben sudo-rechten zodat taken die root privileges nodig hebben kunnen uitgevoerd worden.
IP-adressen noteren
Zodra alle instances opgestart zijn, vind je hun IP-adressen terug via Compute → Instances → [klik op de instance] → NICs.
Noteer de IP-adressen hieronder:
| Virtual Machine | OS | IP-adres | Credentials |
|---|---|---|---|
| Ansible Control Host | Rocky Linux | student/student | |
| Managed Host 1 | Ubuntu | ubuntu/Azerty123 | |
| Managed Host 2 | Ubuntu | ubuntu/Azerty123 | |
| Managed Host 3 | Ubuntu | ubuntu/Azerty123 |
SSH-verbinding testen
Maak een SSH-verbinding met de Control Host en de 3 nodes via MobaXterm, de terminal van VS Code (Remote-SSH) of een gelijkaardig hulpmiddel.
ssh student@<ip-control-host>
ssh ubuntu@<ip-node1>
Kan je een instance niet via SSH bereiken? Dan kan je altijd de webconsole gebruiken als fallback. Klik in het instance-overzicht op het consolepictogram (scherm-icoontje) om een directe terminalsessie te openen vanuit je browser. Dit is nuttig als bv. de netwerkinstellingen niet correct zijn.
Snapshots nemen
Neem van elke virtuele machine een snapshot zodat je op elk moment kan terugkeren naar een propere beginsituatie.
Dat doe je via Compute → Instances → [klik op de instance] → Take Snapshot.
Geef de snapshot een duidelijke naam, bv. clean-install.
Je kan tussendoor ook extra snapshots nemen vóór ingrijpende aanpassingen. Door een snapshot terug te zetten kan je je playbook opnieuw testen alsof het de eerste keer is.
Stap 2 - Ansible installeren
De Ansible Control Host zal de machine worden van waaruit alle Ansible taken (playbooks, roles,...) uitgevoerd zullen worden.
Hoe de installatie gebeurt verschilt van OS tot OS. Op Rocky 9.1 kan dit via DNF, in eerdere versies liep dat via epel.
-
Installeer ansible-core
[student@ControlHost ~]$ sudo dnf upgrade[student@ControlHost ~]$ sudo dnf install ansible-core -
Controle als Ansible correct geïnstalleerd werd:
[student@ControlHost ~]$ ansible --versionansible [core 2.14.x][...]
Rocky Linux 9 installeert ansible-core vanuit de AppStream-repository, die het Red Hat-beleid volgt: de versie wordt gepind op 2.14 en er worden enkel security patches uitgebracht — geen major upgrades. Red Hat heeft bevestigd dat Ansible Core 2.14 de volledige RHEL 9-levenscyclus (tot ~2032) ondersteund blijft. Je zit dus op 2.14, ook al is die versie eind 2024 officieel end-of-life gegaan.
Niet voor deze workshop, maar wil je toch een recentere versie gebruiken? Enkele opties:
- pip:
pip install --user ansible-core(of in een virtualenv) - pipx:
pipx install ansible-core - Ansible Automation Platform: het volledig ondersteunde Red Hat-product
Ansible houdt Configuration Mangement eenvoudig. Ansible heeft geen databank nodig en ook geen continu draaiende "service".
Ook op de hosts die je met Ansible wil beheren is er geen software of agent nodig.
Sinds Ansible 2.10 is de installatie een pak modulairder. In versies voor 2.10 werden heel veel modules samen aangeleverd bij installatie van Ansible (ca. 4000+). Deze werden allemaal samen in een repository beheerd door de ontwikkelaars van Ansible. Omdat uiteindelijk heel veel verschillende partijen in dezelfde repo aan al deze modules moesten meewerken werd dit heel complex. Vanaf versie 2.10 werd daarom alles opgedeeld in verschillende collecties. Op die manier kan er gewerkt worden aan beperktere sets van modules met minder partijen. De community is daardoor ook niet meer gebonden aan het release schedule van Ansible.
Het gevolg op het gebruik in je Playbooks en Roles is miniem, maar er wordt geadviseerd om de modulenamen fully qualified collection name of #FQCN# te noteren in je Playbooks. vb. ipv de module file gebruik je ansible.builtin.file.
Aangezien bij installatie niet alle modules meegeleverd worden zal je mogelijks achteraf extra modules moeten installeren.
Dat doe je door extra collections toe te voegen. Collections toevoegen kan je doen met ansible-galaxy collection install <collection.name>. Later in de opgave wordt dit verder toegelicht.
In deze workshops hanteren we de meest recente Ansible-versie op het moment van schrijven, maar hou er dus rekening mee dat documentatie die je online vindt mogelijks al wat gedateerd zal zijn qua syntax.
Verder gebruiken wij dus ansible-core ipv de uitgebreidere ansible.
Zie Ansible Documentation.
Stap 3: IaC onder versiecontrole
Infrastructure as Code valt bij voorkeur ook onder versiecontrole. Ook in deze workshop is het de bedoeling om stelselmatig je werk in een repo op te slaan (commit) en te pushen naar een centrale locatie (gitlab.com).
-
Maak op gitlab.com/ikdoeict een repo aan voor deze workshop met de naam
2526-IaC_Ansible_workshop_voornaam.familienaam. -
Zorg voor een "clone" van deze repo op je Ansible Control Host (bij voorkeur in je home-folder)
tipIdealiter maak je gebruik van ssh om je connectie met Gitlab te maken. Via https kan dit ook maar is, binnen de context van automation, minder aangewezen. Uiteraard moet dan een private key aanwezig zijn op je host en de bijhorende public key op Gitlab.
-
Werk nu de workshop verder af binnen deze git-folder. Vergeet uiteraard niet héél regelmatig een commit door te voeren en te pushen naar gitlab.com
Check even of git al is geïnstalleerd op je Ansible Control Host.
Indien niet, dan is dat snel gebeurd met:
sudo dnf install git
© Deze workshop werd gebaseerd op de informatie van Red Hat Ansible Automation Platform