Linux · Ansible · AAPVeenendaal
← Notities uit de praktijk

Notities uit de praktijk

Ansible-rollen die meegroeien met je team

Door André van Ginkel

Duidelijke verantwoordelijkheden, voorspelbare variabelen en gerichte tests kunnen Ansible-rollen makkelijker onderhoudbaar maken.

Een rol kan gaandeweg meer taken en uitzonderingen krijgen. Dan wordt het lastiger om te overzien wat een wijziging raakt. Een duidelijke afbakening en controleerbare invoer kunnen helpen om die complexiteit te beheersen.

Een samenhangende verantwoordelijkheid

Een rol voor een dienst mag packages installeren, configuratie plaatsen en de dienst beheren. Die taken kunnen samen één verantwoordelijkheid vormen. Splits onderdelen wanneer ze zelfstandig herbruikbaar moeten zijn of een eigen levenscyclus hebben. Meer kleine rollen zijn niet automatisch beter.

Beschrijf wat de rol beheert, welke invoer nodig is en welke onderdelen erbuiten vallen.

Variabelen die je kunt begrijpen

defaults/main.yml past bij instelbare standaardwaarden. Variabelen in vars/main.yml hebben een hogere prioriteit, maar zijn niet onveranderbaar: onder meer extra vars (-e) kunnen ze overschrijven.

Een herkenbare prefix, zoals sshd_max_auth_tries, kan naamconflicten verminderen. Leg daarnaast toegestane waarden en de plaats van omgevingsspecifieke instellingen vast. Een prefix vervangt geen controle op variabelevoorrang.

Test de bedoelde werking

Controleer niet alleen of taken slagen, maar ook of de bedoelde configuratie en functionaliteit aanwezig zijn. Denk aan een configuratietest, service-status en bereikbaarheid. Molecule kan zulke controles organiseren; de benodigde testomgeving en afhankelijkheden moet je zelf passend inrichten.

Herhaal de uitvoering onder dezelfde omstandigheden en onderzoek onverwachte wijzigingen. Een groene taakuitvoer alleen bewijst niet dat de applicatie correct werkt.

Hergebruik en versies

Een collection kan geschikt zijn om samenhangende rollen en plug-ins gezamenlijk te delen en uit te brengen. De keuze hangt af van beheer, afhankelijkheden en afnemers; er is geen vaste grens van een bepaald aantal repositories.

Leg gebruikte versies en hun afhankelijkheden vast en test updates voordat je ze overneemt.

Wat dit kan opleveren

Een team kan wijzigingen sneller begrijpen en gerichter testen. Hergebruik kan dubbel onderhoud verminderen. Hoeveel tijd dit bespaart, hangt af van de bestaande code, documentatie en werkwijze.

Bronnen

Ansible: rollen
Ansible: variabelen en prioriteit

Bespreek je vraag met André van Ginkel →