Troubleshooten met een tijdmachine!?

Wie heeft er niet eens een script vakkundig om zeep geholpen met het toevoegen van een "kleine verbetering"?
Na uren troubleshooten toch maar een oude versie uit de back-up restoren omdat je niet meer kunt terugvinden wat er ook alweer precies gewijzigd was?

Zou het niet geweldig zijn als we hiervoor een tijdmachine zouden kunnen gebruiken?

Versiebeheer.. Gaap!?

Goed nieuws want deze tijdmachines zijn er al jaren en noemen we in goed Nederlands een versie beheersysteem ;-)
In dit artikel wil ik je laten zien dat je geen softwareontwikkelaar hoeft te zijn om toch voordeel te hebben van een versie beheersysteem.

Versiebeheer is natuurlijk niets nieuws, de meeste mensen komen ermee in aanraking op het moment dat ze met documenten in Sharepoint of Google Docs gaan werken.

Voor software ontwikkelaars is versiebeheer echter een essentieel onderdeel van het werk en met het oog op trends zoals DevOps en IaaC denk ik dat het slechts een kwestie van tijd is voordat dit ook een onmisbaar stuk gereedschap gaat worden van de gemiddelde IT professional.

Steeds meer (IT beheer) software biedt de mogelijkheid voor integratie en automation en vaak is dit alleen mogelijk door het toepassen van regels code.
Versie beheersystemen kunnen helpen hier goed mee om te gaan.
De grootste voordelen zijn:

  • Makkelijk teruggaan in de tijd naar een oudere (werkende) versie;
  • Voorkomen dat er in oude versies wordt gewerkt;
  • Inzicht in welke wijzigingen wanneer zijn doorgevoerd.

En last but zeker not least, versie beheer maakt een einde aan professionele bestandsnamen zoals Create-Aduser-v4_Fixed-MailBoxIssue_New_THIS-ONE-WORKS.ps1

Git

Wie versiebeheer zegt in software land, zegt Git. Git is een open source versie beheer systeem dat bedacht is door dè Linus Torvalds

In de meest simpele vorm kun je Git zien als een tabel waarin samen met een timestamp een overzicht van wijzigingen wordt weergegeven:

En wie is er tijdens de dagelijkse Google zoektochten naar een oplossing niet eens op Github terecht gekomen? Github is in 2016 door Microsoft aangekocht en op dit moment een van de meest populaire Cloud oplossing voor het samen werken aan software. Vrijwel ieder open source project maakt hier gebruik van.

Een van de grootste voordelen van Github is dat je op een gestructureerde manier een kopie kunt maken van een bestaand (werkend) project en de wijzigingen kunt integreren wanneer je er zeker van bent dat de wijzigingen geen problemen veroorzaken.

Praktijkvoorbeeld

Het is makkelijk om overrompeld te worden door Git. Zoals een echte IT-oplossing betaamd komen hier namelijk ook de nodige nieuwe gewichtige termen bij kijken zoals bijvoorbeeld forks en pull requests.

Daarom zal ik aan de hand van een concreet voorbeeld laten zien wat de toegevoegde waarde kan zijn:

Stel we hebben een opdracht gekregen voor het aanmaken van een subfolder genaamd OfficeAutoSave in de homefolder bij alle gebruikers accounts van een klant.

Na wat Googlen en testen hebben we een script gemaakt wat we hiervoor kunnen gebruiken:

Daarna krijgen we een nieuwe opdracht:

Omdat er problemen zijn met NTFS-rechten willen we graag een overzicht van de mapnaam inclusief NTFS eigenaar van iedere gebruiker.

Hiervoor passen we in het script regel 2 en 8 aan en slaan per ongeluk het bestand op onder dezelfde naam:

Met het overzicht kunnen we het probleem oplossen. We krijgen nu het verzoek om voor een andere map ook een aantal subfolders aan te maken. Echter willen we niet het wiel opnieuw uitvinden maar het script herstellen naar de oorspronkelijke staat.

Dit is het moment waarop we kunnen terugvallen op Git. In het screenshot hieronder zie je aan de linkerkant een overzicht van de zogenaamde commits. Dit zijn punten waarop Git een bestand heeft opgeslagen als een nieuwe revisie:

Aan de rechterkant kun je per revisie zien wat er precies is gewijzigd in de kleuren rood en groen. Je kunt je nu wel voorstellen hoeveel tijd het kan opleveren als je voortaan zo snel je wijzigingen kunt terugzoeken!

IT Toolbox

Persoonlijk denk ik dat dit een essentiële tool wordt voor iedere IT-professional, iets wat nu al het geval is voor elke software ontwikkelaar.

Hopelijk heb je door dit artikel iets meer inzicht gekregen in de kracht van een versiebeheer systeem zoals Git en is dit het startpunt voor het leren van een nieuwe vaardigheid!