Net als veel van onze klanten gebruiken we de afgelopen jaren steeds meer functionaliteiten uit Microsoft Azure, het cloud computing platform van Microsoft. Een van de tools die we steeds meer zijn gaan gebruiken is Azure DevOps. In deze blog willen we je meenemen in het waarom en hoe we dit gebruiken. Vooral omdat deze tooling traditioneel vooral wordt gebruikt in ontwikkelomgevingen en wij hiermee met name onze infrastructuur onderhouden.
Wat is Azure DevOps?
Maar eerst: wat is DevOps? DevOps staat voor “Development” (Ontwikkeling) en “Operations” (Bedrijfsactiviteiten). Het idee achter DevOps is dat het door middel van het bundelen van mensen, processen en technologie mogelijk wordt om doorlopende waarde aan klanten te leveren.
Dit wordt bereikt door de rollen die voorheen afzonderlijk van elkaar werkten, denk hierbij aan ontwikkeling, beveiliging, kwaliteitsbewaking en IT beheer, samen te voegen. Hierdoor kunnen de rollen als team worden gecoördineerd om betere, betrouwbaardere en veiligere producten en diensten te leveren. Daarnaast wordt het met behulp van de juiste tools mogelijk gemaakt om sneller in te springen op de interne behoefte voor automatisering om zo sneller bedrijfsdoelen te halen en in te springen op de behoefte van klanten.
De DevOps Cyclus van werken is:
- Plannen
- Ontwikkelen
- Aanbieden
- Uitvoeren
Deze 4 fases zullen gedurende de gehele levensduur van een dienst en/of product constant worden doorlopen.
Nog even iets meer over de verschillende fases:
Planfase
In deze fase zal het team brainstormen om ideeën te ontwikkelen en deze te beschrijven en definiëren. Hier zullen dan taken aan worden gekoppeld zodat de voortgang voor het hele team zichtbaar is. De voortgang kan bijvoorbeeld worden gevisualiseerd in dashboards.
Ontwikkelfase
In dit stadium zal de dienst en/of product worden ontwikkeld. Hierbij kan worden gedacht aan het opbouwen van de infrastructuur, het schrijven van de code, testen en beoordelen van het idee. Ook worden, zoveel als mogelijk, de dagelijkse handelingen geautomatiseerd.
Aanbiedfase
In deze fase is de dienst en/of het product klaar voor productie en zal worden gekeken hoe updates kunnen worden doorgevoerd in de productieomgeving. Hierbij worden automatische- en handmatige kwaliteitsbeheerfases doorlopen.
Uitvoerfase
In dit stadium is het tijd om de dienst en/of het product te monitoren en eventuele problemen zo snel mogelijk op te lossen. Het liefst worden problemen opgespoord en opgelost voordat de klant er wat van merkt.
Om diensten en producten continu te verbeteren en goed in te spelen op behoeftes van klanten zullen deze fases in een cyclus worden doorgelopen. Het continu doorlopen van de cyclus geeft tevens de mogelijkheid om preventief onderhoud te plegen.
Het doel is de betrouwbaarheid en beschikbaarheid van diensten en producten op een zo hoog mogelijk niveau te krijgen. Hierbij is het streven nul uitvaltijd.
Wat doen wij anders sinds we Azure DevOps gebruiken?
Voorheen werd intern gebruik gemaakt van Subversion (SVN) voor het versiebeheer van onze scripts. Met Subversion is het lastiger om met verschillende beheerders aan dezelfde scripts te werken doordat o.a. het samenvoegen van verschillende wijzigingen in dezelfde bestanden sneller fouten geeft. Tevens is in dit programma niet goed inzichtelijk wie welke bestanden aan het bewerken is. Een bestand kan ook makkelijk door één beheerder worden beheerd en daarmee in productie gaan zonder dat een ander een kwaliteitscontrole hoeft te doen. Dat zal dus altijd moeten worden georganiseerd.
Met het invoeren van Azure DevOps is het makkelijker geworden om samen te werken aan dezelfde scripts en is het met behulp van Azure Boards voor anderen inzichtelijker waar aan wordt gewerkt. Bovendien is de betrouwbaarheid omhoog gegaan door het implementeren van het vier-ogenprincipe: wijzigingen moeten altijd door een tweede engineer worden gecheckt. Andere veranderingen in het beleid zorgen er ook voor dat niet zomaar aanpassingen kunnen worden doorgevoerd in de productieomgeving.
Door gebruik te maken van Azure Pipelines is het daarnaast ook mogelijk om automatisch scripts te testen en uit te voeren. Dit moest voorheen weer met andere software worden geïnitieerd of met een taak in Windows Task Scheduler. Het maakt met Azure Pipelines overigens niet uit of gebruik wordt gemaakt van lokale data of data in Azure, in beide gevallen gaat het eenvoudig.
Nog een paar handige tips als je DevOps overweegt
Er zijn tal van redenen om over te stappen naar Azure DevOps. Een paar praktijkvoorbeelden waar wij gebruik van maken:
Koppeling met Microsoft Teams
Azure DevOps is gemakkelijk te koppelen aan Microsoft Teams. Hierdoor is het eenvoudig om de status van taken, bugs en tal van andere zaken in te zien zonder dat moet worden ingelogd in de Azure omgeving. Op die manier is het ook mogelijk om nieuwe taken toe te voegen en te beheren vanuit Teams, maar ook persoonlijke dashboards aan te maken.
Azure Key Vaults
Azure Key Vaults is een wachtwoord kluis binnen de Azure omgeving. Azure Key Vaults kan worden gebruikt om wachtwoorden, certificaten en andere gevoelige gegevens op te slaan. Door middel van Azure DevOps kunnen deze gegevens eenvoudig worden opgehaald en in scripts worden gebruikt. Daardoor zijn deze gevoelige gegevens nergens leesbaar terug te vinden in de code. Verder hoeven werknemers geen expliciete toegang te hebben tot een Key Vault om gebruik te kunnen maken van de daarin opgenomen gevoelige gegevens.
Script signing
Door middel van de aangeboden functionaliteiten van Azure DevOps en Key Vaults is het mogelijk om automatisch alle productie scripts te voorzien van een certificaat. Dit verhoogt de beveiliging omdat scripts in productie niet zomaar kunnen worden gewijzigd. Bij een eventuele ongeoorloofde wijziging wordt direct ervoor gezorgd dat het script niet meer bruikbaar is. Daarnaast kan de Execution Policy nog strakker worden ingesteld in plaats van “Unrestricted”. Momenteel gebeurt dat in veel gevallen waar niet-versleutelde scripts moeten worden uitgevoerd. Welke beheerder heeft niet wel eens op een machine het volgende PowerShell commando uitgevoerd:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Doordat het met de script signing functionaliteit zoveel makkelijker is om een script te wijzigen en daarna weer beveiligd te distribueren is dat commando voortaan verleden tijd! 💪
Ook aan de slag met Azure DevOps?
We snappen heel goed dat je na het lezen van deze blog enthousiast bent geworden. Wil je ook gaan starten met DevOps? Met de kennis die we zelf hebben opgebouwd kunnen we je op weg helpen met een initiële inrichting of een technische training. Wellicht heb je nog wel andere vragen? Neem gerust contact met ons op, wij zorgen dat je vraag bij de juiste persoon terecht komt.