Terraform-configuratie en scripting
In deze les kijken we naar terraform-configuratie en scripting.
Waarom Terraform?
Als infrastructuurbeheerder hebt u een hulpprogramma nodig voor het inrichten en beheren van de Azure-infrastructuur. U wilt infrastructuur ook gebruiken als code in configuratiebestanden die de topologie van uw Azure-resources beschrijven.
HashiCorp Terraform is zeer geschikt voor het implementeren van infrastructuur tussen cloudproviders. Het biedt ontwikkelaars consistente hulpprogramma's voor het beheren van elke infrastructuurdefinitie.
Infrastructuurbeheer automatiseren
Met behulp van terraform-configuratiebestanden op basis van sjablonen kunt u Azure-resources op een herhaalbare en voorspelbare manier definiëren, inrichten en configureren. Deze automatisering biedt verschillende voordelen:
- Het verlaagt het potentieel van menselijke fouten bij het implementeren en beheren van infrastructuur.
- Dezelfde sjabloon wordt meerdere keren geïmplementeerd om identieke ontwikkel-, test- en productieomgevingen te maken.
- Het vermindert de kosten van ontwikkel- en testomgevingen door ze op aanvraag te maken.
Infrastructuurwijzigingen begrijpen voordat ze worden toegepast
Naarmate een resourcetopologie steeds complexer wordt, kan het lastig zijn om de betekenis en het effect van infrastructuurwijzigingen te begrijpen.
Met Terraform kunt u infrastructuurwijzigingen valideren en bekijken voordat u ze toepast. Teamleden kunnen effectiever samenwerken door inzicht te krijgen in de voorgestelde wijzigingen en hun effect vroeg in het ontwikkelingsproces.
Terraform-configuratiebestanden
Configuratiebestanden genereren een uitvoeringsplan en wat het plan doet om de gewenste status te bereiken. Terraform kan vervolgens de beschreven infrastructuur bouwen. Wanneer de configuratie verandert, kan Terraform bepalen wat er is gewijzigd en incrementele uitvoeringsplannen maken.
Terraform-configuratiebestanden gebruiken hun eigen configuratietaal die vergelijkbaar is met YAML die is ontworpen om een beschrijving van de infrastructuur toe te staan.
U maakt configuratiebestanden met behulp van de HCL-syntaxis (HashiCorp Configuration Language). HCL is declaratief en beschrijft een bedoeld doel in plaats van de stappen om dat doel te bereiken. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat.
De configuratiebestanden worden opgeslagen als tekstbestanden zonder opmaak met de extensie .tf . Dit zijn:
- main.tf: (vereist) Definieert de hoofdstructuur, waarbij de volledige infrastructuur rechtstreeks of via aanroepen naar modules wordt geïmplementeerd
- outputs.tf: identificeert elke retourwaarde van een Terraform-module
- variables.tf: definieert de variabelen in main.tf, ongeacht of ze vereist zijn of niet
Modules
U kunt Terraform-resources groeperen in een module, waardoor een grotere configuratie-eenheid wordt gemaakt. Deze modules zijn sets configuratiebestanden die zijn opgeslagen in één map. Een eenvoudige configuratie bestaat uit één map met een of meer TF-bestanden .
Modules bieden veel voordelen. Bijvoorbeeld modules:
- Hulp bij het organiseren van uw project.
- Complexiteit inkapselen.
- Hiermee kunt u algemene taken opnieuw gebruiken.
- Zorg voor consistentie en zorg ervoor dat u goede procedures volgt.
Het main.tf-bestand
Het main.tf-bestand bevat de hoofdset met configuratiegegevens voor uw module. Dit bestand wordt vaak een Terraform-plan genoemd. Uw Terraform-plan geeft de infrastructuurbronnen op die u nodig hebt. U kunt dit bestand een naam opgeven wat u wilt, maar het wordt meestal main.tf genoemd.
Terraform-werkstroom
Terraform raadt de kernwerkstroom 'initialiseren, plannen en toepassen' aan voor automatisering. Met deze werkstroom worden alle Terraform CI/CD-acties uitgevoerd op nieuwe en bijgewerkte Git-pull-aanvragen.
De belangrijkste acties voor deze werkstroom zijn:
- Init: Een werkmap initialiseren met Terraform-configuratiebestanden
- Plan: Een plan maken voor het wijzigen van resources zodat deze overeenkomen met de huidige configuratie
- Toepassen: Pas de wijzigingen toe die door het plan worden beschreven
Provincie
Met de status kan Terraform weten welke Azure-resources moeten worden toegevoegd, bijgewerkt of verwijderd.
Terraform maakt gebruik van de status om plannen te maken en wijzigingen aan te brengen in uw infrastructuur. Voordat een bewerking wordt uitgevoerd, wordt Terraform vernieuwd om de status bij te werken met de echte infrastructuur.
Status wordt standaard opgeslagen in een lokaal tekstbestand met de naam terraform.tfstate. Terraform beheert dit bestand met behulp van de werkstroomacties die u in uw modules definieert.
U kunt de status ook extern opslaan, een aanpak die beter werkt in een teamomgeving. Zie de samenvattingseenheid aan het einde van deze module voor meer informatie over het extern beheren van de status.
Volgende stappen
In de volgende les bespreken we het gebruik van Terraform met GitHub Actions of Azure Pipelines om uw toepassingen in te richten en te implementeren.