Terraform-code testen

Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Terraform maakt u configuratiebestanden met behulp van HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.

Terraform is een IaC-hulpprogramma (Infrastructure as Code). Deze categorie van het hulpprogramma verwijst naar het feit dat u uw Terraform-bestanden behandelt zoals u de broncode van het project zou doen. Onderdeel van dat proces omvat versiebeheer en broncodebeheer. Testen moet ook deel uitmaken van uw proces. Dit artikel bevat een overzicht van de verschillende typen tests die u kunt uitvoeren op een Terraform-project.

Integratietests implementeren

Integratietests valideren dat een nieuw geïntroduceerde codewijziging de bestaande code niet onderbreekt. In DevOps verwijst continue integratie (CI) naar een proces dat het hele systeem bouwt wanneer de codebasis wordt gewijzigd, zoals iemand die een pull-aanvraag wil samenvoegen in een Git-opslagplaats. De volgende lijst bevat veelvoorkomende voorbeelden van integratietests:

  • Hulpprogramma's voor statische codeanalyse, zoals lint en indeling.
  • Voer terraform validate uit om de syntaxis van het configuratiebestand te valideren.
  • Voer terraform-plan uit om ervoor te zorgen dat de configuratie werkt zoals verwacht.

Eenheidstests implementeren

Eenheidstests zorgen ervoor dat een specifiek onderdeel of een functie van een programma correct werkt. De ontwikkelaar van de functionaliteit schrijft eenheidstests. Soms ook wel testgestuurde ontwikkeling of TDD genoemd, omvat dit type testen continue korte ontwikkelingscycli. In de context van Terraform-projecten kan een eenheidstest plaatsvinden terraform plan om te garanderen dat de werkelijke waarden die beschikbaar zijn in het gegenereerde plan gelijk zijn aan de verwachte waarden.

Het testen van eenheden kan met name nuttig zijn wanneer uw Terraform-modules complexer worden:

  • Dynamische blokken genereren
  • Lussen gebruiken
  • Lokale variabelen berekenen

Net als bij integratietests worden vaak eenheidstests opgenomen in het proces voor continue integratie.

Nalevingstests implementeren

Gebruik nalevingstests om ervoor te zorgen dat de configuratie het beleid volgt dat u voor het project definieert. U kunt bijvoorbeeld geopolitieke naamconventies definiëren voor uw Azure-resources. Of u wilt dat virtuele machines worden aangemaakt vanuit een gedefinieerde subset van afbeeldingen. Gebruik nalevingstests om deze regels af te dwingen.

Definieer doorgaans nalevingstests als onderdeel van het continue integratieproces.

End-to-end testen (E2E) implementeren

E2E-tests valideren dat een programma werkt voordat deze in productie wordt geïmplementeerd. Een voorbeeldscenario is een Terraform-module die twee virtuele machines implementeert in een virtueel netwerk. Mogelijk wilt u voorkomen dat de twee computers elkaar pingen. In dit voorbeeld kunt u een test definiëren om het beoogde resultaat vóór de implementatie te controleren.

E2E-tests zijn doorgaans een proces met drie stappen. Pas eerst de configuratie toe op een testomgeving. Voer vervolgens code uit om de resultaten te controleren. Ten slotte initialiseert u de testomgeving opnieuw of stelt u deze buiten gebruik (zoals het vrijgeven van een virtuele machine).