Ken je dat? Je hebt een organisatie van honderden medewerkers van wie velen taken automatiseren. Zij bevinden zich op verschillende afdelingen en hebben weinig tot geen contact met elkaar. Toch zijn er taken die het gros van de teams uitvoert. Zoals de MFA van een eindgebruiker resetten of het aanmaken van een nieuw gebruikersaccount bij een klant. De kans bestaat dan dat scripts voor dit soort taken meerdere keren door verschillende mensen geschreven worden. Dat is zonde.
Het idee: een centrale plek voor scripts
Bij OGD wilden we voorkomen dat mensen dubbel werk doen bij het automatiseren van taken. Dus bedachten we dat er een centrale plek moest komen, waar alle collega’s suggesties en scripts kunnen vinden en toevoegen. Dit moet gemodereerd worden door een kernteam, dat besluit of een toevoeging daadwerkelijk zinnig is en wordt doorgevoerd.
Deze centrale plek hebben we bij OGD ontwikkeld en noemen we Omnibus. Het is een verzameling scripts, net zoals in de literaire wereld een omnibus een verzameling romans is. Het bijzondere aan deze scripts is dat ze generiek zijn. Ze zijn dus zo geschreven, dat ze geschikt zijn voor gebruik bij iedere klant van OGD. Op die manier richten we nu die ene standaardwijziging die bij elke klant wel voorkomt in één keer goed in en voeren we de wijziging vervolgens bij al die klanten naadloos uit.
Een andere betekenis van omnibus is ‘door allen’. Ook met deze betekenis identificeren onze medewerkers zich. Het inner-sourcingkarakter zorgt ervoor dat mensen uit verschillende lagen van de organisatie bijdragen. Van scripts toevoegen tot documentatie schrijven en van een bug aanmelden tot suggesties aanbrengen voor de architectuur.
Kernteam
Het kernteam, geflankeerd door een aantal enthousiaste medewerkers uit andere teams, ontwikkelde Omnibus en leidt het in goede banen. In dit team zitten OGD’ers die gespecialiseerd zijn in het automatiseren van interne processen en taken. Naast het ter beschikking stellen van de techniek, vormt kennisoverdracht ook een groot punt op de agenda. Het automatiseren van veelvoorkomende taken is primair, maar daarmee enthousiasmeren we ook collega’s om hetzelfde te doen en betrokken te zijn bij het project.
Gebruikte technieken
We gebruiken verschillende technieken om alles uit Omnibus te halen. In de back-end staan de diverse scripts (functions) in meerdere PowerShell-modules in onze eigen private PowerShell gallery. Deze functions combineren we tot doelgerichte scripts in repositories op Azure DevOps. Via Azure pipelines worden de scripts aangeboden als uitvoerbare automations. Deze (nog steeds generieke) automations worden vervolgens weer aangesproken door wrapper pipelines, die in klantspecifieke Azure DevOps projects staan.
Deze projects hebben een service connection richting de tenant van de klant, waarmee de authenticatie geregeld wordt. Alle specifieke data die nodig is voor het uitvoeren van de automation, wordt opgegeven bij het starten van de automation (bijvoorbeeld: accountnaam), is al aanwezig in het Azure DevOps project (bijvoorbeeld: service connection), of staat in een variable group (bijvoorbeeld: welke service connection of agent pool er moet worden gebruikt). Tot slot worden deze wrapper pipelines weer via de zelfontwikkelde OGD Portal aan onze servicedeskers, beheerders en specialisten aangeboden.
Kwaliteitscontrole
Omdat de hele organisatie gebruik kan maken van Omnibus, moet er natuurlijk een goede kwaliteitscontrole zijn. In eerste instantie bewaakt het kernteam de toevoegingen. Hoewel iedereen suggesties kan doen, is niet alles bruikbaar. Sommige suggesties zijn bijvoorbeeld te specifiek voor een bepaalde use case of klant om te hergebruiken bij andere klanten.
Wanneer een idee wél wordt uitgewerkt, houden we tijdens het ontwikkelen al rekening met alle zaken die nodig zijn om goed te passen in het framework. Zo stellen we eisen aan de code (style guide), de documentatie (volledige comment-based help) en tests (pester tests voor alle functions). De meeste van deze eisen worden met een CI/CD-pipeline gecontroleerd. Nog vóórdat de code live wordt gezet vangen we ze af als er iets niet in orde is. Tot slot voeren we voor het daadwerkelijk mergen van de code nog enkele integration tests uit, om te zien of het geheel waar de wijzigingen onderdeel van uitmaken nog naar behoren werkt.
Front end
Er zit een boel complexe techniek achter de schermen, maar daar heeft een servicedesker die een eindgebruiker wil helpen met een nieuwe mailbox niets aan. Die wil gewoon een knop om op te drukken, die doet wat hij of zij wil. Die knoppen zijn gemaakt in de OGD Portal. In deze Portal krijgt iedereen de klanten te zien waar ze rechten op hebben. Onder deze klanten zien ze vervolgens weer de automations waar ze rechten op hebben.
Rechtenbeheer op dit niveau is belangrijk, omdat het mes aan twee kanten snijdt: je kunt mensen met weinig rechten en ervaring toegang geven tot handelingen die ze anders niet zouden kunnen uitvoeren, maar als je alles voor iedereen beschikbaar maakt, is een foutje of goed bedoelde handeling die niet wenselijk is snel gebeurd.
Conclusie
Met een centrale plek binnen je organisatie voor generieke scripts voorkom je dubbel of zelfs veelvoudig werk. Daarnaast voer je standaardwijzigingen makkelijker, sneller en uniform uit, intern en bij klanten. Het is daarbij wel belangrijk om zo’n verzameling scripts in goede banen te leiden, zowel op het gebied van kwaliteit als op het gebied van rechtenbeheer. Op die manier haalt je organisatie het meeste uit automatiseren.
Over Jelle
Jelle de Graaf is een ervaren automation developer bij OGD ict-diensten. Samen met zijn Service Automation team bouwt hij tools en applicaties waarmee hij werk binnen de hele organisatie automatiseert. Hij is gespecialiseerd in Azure Pipelines, Azure Functions en Powershell. Jelle bouwt graag oplossingen die tijd besparen en snel waarde opleveren. Met zijn team bouwde hij naast Omnibus bijvoorbeeld JIT Admin. Hiermee vraag je een admin account aan dat alleen openstaat wanneer je het actief gebruikt.
Naast zijn standaard werkzaamheden deelt Jelle graag zijn kennis, als spreker en door collega’s les te geven. Ook is hij mede-eigenaar van Caravan Escape, dat een caravan heeft omgebouwd tot een mobiele escape room voor evenementen en bruiloften.