In de ruimte van infrastructuur als code (IaC) is een van de meest nuttige tools die de afgelopen jaren is uitgekomen, HashiCorp’s Terraform voor Windows. De mogelijkheid om infrastructuur te versiebeheren, het automatiseren van het voorzien van resources en uitvoeren over verschillende cloudproviders is enorm waardevol voor alle DevOps- en automatiseringsworkflows.
Één gebruiksscenario voor Terraform is in CI/CD. Terraform stelt je in staat om:
Mijn Laatste Video’s
- een testomgeving te creëren
- een applicatie implementeren
- integratietests uitvoeren
- de testomgeving vernietigen
Alle stappen worden ook automatisch uitgevoerd. En er is geen datacenter nodig!
Vereisten
Dit artikel is een stapsgewijze handleiding voor het opzetten van Terraform Windows. Als je wilt volgen, zorg er dan voor dat je de volgende vereisten hebt:
- A Windows 10 device
- Een AWS-account
- De AWS CLI geïnstalleerd en geconfigureerd op dat apparaat. Je kunt leren hoe je het installeert hier en hoe je het configureert hier.
- (Optioneel) Visual Studio Code met de Terraform-extensie
Installeren van de Terraform Windows-applicatie
Om gebruik te maken van de kracht van Terraform, moet je het eerst installeren op het besturingssysteem van je keuze. In dit artikel ga ik me richten op Windows. Maar weet dat Terraform ook op andere besturingssystemen kan draaien. Als je niet op Windows zit, bekijk dan de installatiedocumentatie.
The Hard Way
Als je geen gebruik kunt maken van een pakketbeheerder of als je wilt begrijpen hoe het installatieproces werkt, kun je Terraform handmatig installeren. Je kunt Terraform installeren door het binair bestand te downloaden en toe te voegen aan het systeempad omgevingsvariabele. Als dit intimiderend lijkt, verzeker ik je dat er een eenvoudigere manier is om dit te doen, die je in de volgende sectie zult leren.
- Download de juiste versie van Terraform vanaf de downloadpagina van HashiCorp. In mijn geval is het de Windows 64-bits versie.
- Maak een map op je C:\ schijf waar je het Terraform uitvoerbare bestand kunt plaatsen. Ik geef er de voorkeur aan om installatieprogramma’s in een submap te plaatsen (bijv. C:\tools) waar je binair bestanden kunt plaatsen.
- Als het downloaden is voltooid, zoek het dan op in Bestandsverkenner. Pak het zipbestand uit naar de map die je hebt aangemaakt in stap 2.
- Open je Startmenu en typ “omgeving” in, en het eerste dat verschijnt, zou de Systeemomgevingsvariabelen bewerken-optie moeten zijn. Klik daarop en je zou dit venster moeten zien.

5. Klik op Omgevingsvariabelen… onderaan en je ziet dit:

6. Onder het onderste gedeelte waar staat Systeemvariabelen, zoek er een genaamd Path en klik op bewerken. Je ziet dan een lijst met locaties waar Windows de binairbestanden zou kunnen vinden die het om welke reden dan ook nodig heeft.
7. Klik op Nieuw en voeg het map pad toe waar terraform.exe zich bevindt onderaan de lijst. Het zou er zo uit moeten zien als je klaar bent.

8. Klik op OK op elk van de menu’s die je hebt geopend totdat er geen meer over is.
9. Om ervoor te zorgen dat Windows het nieuwe pad detecteert, open je een nieuwe CMD/PowerShell-prompt en typ je refreshenv
.
10. Controleer of de installatie succesvol was door terraform --version
in te voeren. Als het een versie teruggeeft, ben je klaar om te gaan.
De Makkelijke Manier
Phew, dat was veel werk! Het zou vreselijk zijn om dat elke keer te moeten doen als je nieuwe software op je apparaat moest installeren. Laten we in plaats daarvan een pakketbeheerder gebruiken. Er zijn een paar pakketbeheerders die je kunt gebruiken om Terraform op Windows te installeren. Voor Windows is mijn favoriet Chocolatey. Het maakt het installeren, verwijderen en bijwerken van software net zo eenvoudig als een opdracht van één regel, en Terraform is daarop geen uitzondering.
Om Terraform te installeren met Chocolatey, volg je de volgende stappen:
- Open een CMD/PowerShell-prompt als beheerder en installeer Chocolatey met het commando van hun installatiepagina.
- Als dat is voltooid, voer dan
choco install terraform
uit. Als je wilt, kun je ook-y
aan het einde toevoegen om automatisch akkoord te gaan met de installatie op je apparaat.
Nadat dat commando is uitgevoerd, krijg je zoiets als dit:
3. Controleer of de installatie succesvol was door terraform --version
in te voeren.
De Linux-methode
I can almost hear what you’re thinking. Wait a minute Chris, didn’t you say this was going to cover installing Terraform on Windows?
Ja, en dat is het nog steeds. Maar een van de functies op Windows 10 is het Windows Subsysteem voor Linux, of WSL. Hiermee kun je Linux-commando’s uitvoeren op Windows.
- Installeer WSL. Ik ga hier niet diep in op hoe je WSL installeert en configureert, maar als je wilt volgen en het nog niet hebt ingesteld. Een TechSnips-snippet die ik over dit onderwerp heb gedaan, is hieronder te vinden.
2. Voer in je WSL-shell apt-get install unzip
uit. Je hebt dit nodig om de Terraform-binaries later uit te pakken.
3. Download Terraform door wget https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_linux_amd64.zip
uit te voeren. Vergeet niet de versie en architectuur te vervangen door degene die het beste bij je apparaat past. Je kunt de volledige lijst met Terraform-releases hier vinden.
4. Voer unzip terraform_0.12.6_linux_amd64.zip terraform
uit om de inhoud van het zipbestand uit te pakken naar een map genaamd terraform.
5. Zodra het ZIP-bestand is uitgepakt, moet je het ergens verplaatsen dat toegankelijk is via het systeempad. Gelukkig heeft Linux standaard een map waar gebruikers binaries aan kunnen toevoegen. Verplaats de Terraform-binary daarheen door mv terraform /usr/local/bin/
uit te voeren. De /usr/local/bin-map staat al ingesteld in je systeempad.
6. Controleer of de installatie succesvol was door terraform --version
uit te voeren.
Automatiseren van een AWS Terraform EC2-instantie
Nu je Terraform hebt geïnstalleerd, kun je ermee beginnen. In dit bericht ga ik demonstreren hoe je een eenvoudige AWS Terraform EC2-instantie kunt bouwen. Maar weet dat Terraform honderden verschillende soorten infrastructuur kan voorzien.
Om te beginnen heb je eerst een directory nodig om de Terraform EC2-scripts vanuit uit te voeren. Het is belangrijk om voor elk omgeving een aparte directory te hebben. Op het moment dat ik dit schrijf, heeft Terraform geen manier om te filteren wat het uitvoert. Het zal elk script in je huidige werkmap uitvoeren.
TF-script instellen
- In je cmd- of PowerShell-console die als beheerder wordt uitgevoerd, voer je
mkdir hello-terraform
uit en vervolgenscd ./hello-terraform
- Zodra je een directory hebt, heb je een Terraform-script nodig. Hieronder staat een voorbeeld dat je kunt gebruiken. Dit is een typisch Terraform-script dat de AWS provider gebruikt om een AWS-instantie resource te maken.
Als je het volledige script wilt, kopieer het dan hieronder. Als je wilt begrijpen wat dit script doet, lees dan verder hieronder.
# Terraform HCL
3. Sla het bovenstaande script op als main.tf
in je werkmap.
TF-scripts begrijpen
Voordat je verder gaat, kijk naar het onderstaande blok en wat het verklaart.
#Terraform HCL
Dit blok vertelt Terraform EC2 welke provider moet worden gebruikt. Er zijn providers voor alle belangrijke cloudleveranciers, evenals enkele on-prem-leveranciers. Als je geavanceerder bent en weet hoe je Golang moet schrijven, kun je ook je eigen provider schrijven.
Dit blok vertelt Terraform om de AWS-provider te gebruiken en toegangssleutels in het ~/.aws/credentials
-bestand onder de profielnaam default
te gebruiken. Dit bestand wordt aangemaakt wanneer je de AWS CLI instelt met het aws config
-commando zoals vermeld in de vereisten.
Het is ook vermeldenswaardig dat ~/
een verkorte notatie is voor de huidige gebruikersmap. Als je vanuit een Windows-achtergrond komt, komt dit overeen met $env:USERPROFILE
of %USERPROFILE%
. Maar Terraform ondersteunt die notatie niet op het moment van schrijven.
De volgende blok hieronder beschrijft een Terraform EC2-instantie en hoe deze moet worden gebouwd. Als je naar de Terraform-documentatie voor aws_instance kijkt, zie je dat sommige parameters verplicht zijn en sommige optioneel zijn. In dit geval zijn de verplichte parameters de AMI ID (ami-07d0cf3af28718ef8
) voor Ubuntu 18.04 LTS en t2.micro
voor het instantietype.
Door een tag-blok door te geven met de sleutel Name
en de waarde HelloTerraform
, wordt deze tag ook toegewezen aan de gemaakte instantie. Dit is optioneel.
# Terraform HCL
Nu het script is ingesteld, roep het aan door terraform init
uit te voeren vanuit je werkmap. Dit zal alle afhankelijkheden en providers ophalen in een map met de naam .terraform
. Als alles goed gaat, zou je iets moeten zien zoals dit:
Voordat je wijzigingen aanbrengt, stelt Terraform EC2 je in staat te zien wat er zal worden gemaakt door terraform plan
uit te voeren. Hier is wat dat zal opleveren:
# aws_instance.ubuntu wordt aangemaakt
Het bouwen van de AWS EC2-instantie: Aanmaken
Nu ben je klaar om het zelf uit te voeren door terraform apply
te gebruiken. Hieronder zie je output vergelijkbaar met terraform plan
, maar met een extra prompt om te bevestigen dat je deze wijzigingen daadwerkelijk wilt toepassen.
Zodra je ‘ja’ typt, zal Terraform EC2 beginnen met het voorzien van de Terraform EC2-instantie door de AWS API’s aan te roepen met de toegangssleutel in je referentiebestand. Dit kan enige tijd duren. Zodra het klaar is, zie je iets als het volgende:
Het vernietigen van de AWS EC2-instantie
Zodra je klaar bent met de testomgeving, kun je de instantie vernietigen.
Typ in je cmd/PowerShell-console terraform destroy
. Net als bij het apply
-commando, zie je een lijst van bronnen die Terraform gaat vernietigen en vervolgens een prompt voordat ze daadwerkelijk worden vernietigd.
Zodra je ‘ja’ typt, zal Terraform EC2 beginnen met het vernietigen van de instantie en bevestigen wanneer het klaar is.