Startpagina > Overige externe pakketten > terraform

terraform: Infrastructuur provisioneren en beheren

Terraform is een open-source IaC (Infrastructure as Code) tool ontwikkeld door HashiCorp. Hiermee kunt u cloud- en on-premises resources veilig en efficiënt provisioneren en beheren met behulp van code. U definieert de gewenste infrastructuurstatus via declaratiebestanden, en Terraform plant en voert automatisch de stappen uit om die status te bereiken.

Overzicht

Terraform implementeert een Infrastructure as Code (IaC) benadering om infrastructuur te beheren, wat de fouten van handmatige configuratie vermindert en de consistentie en herhaalbaarheid van infrastructuurimplementaties garandeert. Het ondersteunt diverse cloudproviders (AWS, Azure, GCP, etc.) en on-premises oplossingen, en biedt krachtige functies om infrastructuurwijzigingen vooraf te plannen en te beoordelen.

Belangrijkste kenmerken

  • Infrastructuur als Code (IaC): Definieer infrastructuur als code met HCL (HashiCorp Configuration Language).
  • Ondersteuning voor meerdere clouds: Ondersteunt diverse clouds en serviceproviders zoals AWS, Azure, GCP.
  • Statusbeheer: Houdt de werkelijke status van de infrastructuur bij om wijzigingen efficiënt te beheren.
  • Voorbeeld van uitvoeringsplan: Bekijk vooraf welke resources worden gemaakt, gewijzigd of verwijderd voordat wijzigingen worden toegepast.

Belangrijkste commando's (subcommando's)

Terraform voert infrastructuurbeheerworkflows uit via diverse subcommando's.

Kernworkflow

Hulpprogramma's

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`terraform` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Voorbeelden die de typische workflow van Terraform demonstreren.

Terraform-project initialiseren

terraform init

Initialiseer een nieuw Terraform-project of kloon een bestaand project en voer dit commando uit om de benodigde providers te downloaden.

Infrastructuurwijzigingsplan vooraf bekijken

terraform plan

Bekijk vooraf hoe de wijzigingen die in de configuratiebestanden zijn gedefinieerd, worden toegepast op de werkelijke infrastructuur. In deze fase vinden er geen werkelijke resourcewijzigingen plaats.

Infrastructuur implementeren of bijwerken

terraform apply --auto-approve

Pas de wijzigingen die zijn beoordeeld met het 'plan'-commando daadwerkelijk toe op de cloud- of on-premises infrastructuur. De optie `--auto-approve` slaat de bevestigingsprompt over.

Infrastructuurresources verwijderen

terraform destroy --auto-approve

Vernietigt alle resources die door Terraform worden beheerd. Dit commando moet met grote voorzichtigheid worden gebruikt.

Configuratiebestanden formatteren

terraform fmt

Automatisch uitlijnen van alle Terraform-configuratiebestanden (.tf) in de huidige map naar een standaardformaat.

Installatie

Terraform is niet standaard inbegrepen in de meeste Linux-distributies, dus u moet de binaire bestanden downloaden en installeren vanaf de officiële HashiCorp-website. Hieronder vindt u de aanbevolen installatiemethode voor Debian/Ubuntu-gebaseerde systemen.

Installatie via APT-repository (Debian/Ubuntu)

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform

Dit is de methode om de officiële APT-repository van HashiCorp toe te voegen en Terraform te installeren. Deze methode is handig om up-to-date te blijven.

Installatie controleren

Voer na de installatie het volgende commando uit om te controleren of Terraform correct is geïnstalleerd.

Versie controleren

terraform -v

Tips & Aandachtspunten

Tips en aandachtspunten voor het effectief gebruiken van Terraform en het voorkomen van potentiële problemen.

Belangrijkste tips

  • Statusbestandbeheer: Het `terraform.tfstate`-bestand registreert de huidige status van de infrastructuur. Het is raadzaam om dit bestand veilig te beheren en niet direct in het versiebeheersysteem op te nemen. Het gebruik van externe backends zoals S3, Azure Blob Storage, GCS is gebruikelijk.
  • Gebruik van modules: Het maken en beheren van herbruikbare infrastructuurcomponenten als modules verbetert de leesbaarheid en onderhoudbaarheid van de code.
  • Plan beoordelen: Beoordeel altijd de wijzigingen vooraf met het `terraform plan`-commando om onbedoelde resourcewijzigingen of verwijderingen te voorkomen. Dit is vooral belangrijk in productieomgevingen.
  • Versiebeheer: Terraform-configuratiebestanden (.tf) moeten absoluut worden beheerd met een versiebeheersysteem zoals Git om de wijzigingsgeschiedenis bij te houden en samenwerking te vergemakkelijken.
  • Beheer van gevoelige informatie: Hardcodeer geen gevoelige informatie zoals API-sleutels of wachtwoorden direct in configuratiebestanden. Gebruik in plaats daarvan omgevingsvariabelen, Terraform-variabelen (tfvars) of geheimenbeheertools zoals Vault.

Aandachtspunten

  • Het vernietigingscommando (`terraform destroy`) kan niet ongedaan worden gemaakt, dus controleer altijd zorgvuldig voordat u het uitvoert en maak indien nodig een back-up.
  • Beschadiging van statusbestand: Als het statusbestand beschadigd raakt, kan Terraform de werkelijke status van de infrastructuur niet correct vaststellen, wat tot problemen kan leiden. Verminder dit risico door externe backends en vergrendelingsfuncties te gebruiken.
  • Versieconflicten: Verschillen tussen de Terraform CLI-versie en de providerversies kunnen onverwacht gedrag veroorzaken. Het is raadzaam om providerversies vast te zetten met behulp van het `.terraform.lock.hcl`-bestand.

Hétzelfde categoriecommando