Notities uit de praktijk
Ansible-rollen die meegroeien met je team
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.