Skip to main content

Basic setup

Installatie en gebruik van Terraform

Installeer eerst en vooral Terraform op je computer. (http://www.terraform.io) Let daarbij op: terraform-versies zijn onderling vaak niet compatibel. Dit labo werd voorbereid met versie 1.9.6.

Volg de aanwijzingen in de 'getting started'-tutorial (https://developer.hashicorp.com/terraform/tutorials/gcp-get-started) op Terraform.io om je systeem verder voor te bereiden: maak via de console een service account aan in jouw project op GCP (en geef deze admin-rechten ("owner"-rol)), en maak ook een file met een provider aan. Zorg ervoor dat de regio eu-west1 en de zone eu-west1-a gebruikt worden.

tip

Online vind je vaak voorbeelden van providers-objecten waar oude versies gebruikt worden. Gebruik bij voorkeur een recente versie, want we gebruiken elementen op Google Cloud die relatief nieuw zijn. Dit project werd getest met versie 6.4.0 van de provider.

Docenten-toegang tot je GCP-project

Als eerste Terraform-taak vragen we je om het project te delen met je docenten zodat wij kunnen assisteren bij problemen. Gelieve via terraform rechten (editor role) te geven aan roel.vansteenberghe@ikdoeict.be en Sven.knockaert@ikdoeict.be.

Bij het toepassen (.\terraform apply) hiervan krijg je een foutmelding omdat een API nog niet geactiveerd werd. Activeer deze api ook via Terraform.

warning

Deze twee accounts worden niet als emailadres gebruikt. Gebruik bij vragen dus steeds onze Odisee-adressen.

Maak hiervoor dus je eerste resources aan in je Terraform-file.

tip

Je zal hiervoor een google_project_iam_binding nodig hebben.

Nog even ter herhaling (na de Qwiklabs en het bestuderen van de documentatie) de stappen die je zal moeten uitvoeren uitvoeren:

  • Resource aanmaken (adhv de Terraform provider documentatie op https://www.terraform.io/docs/providers/google/) in een tekstbestand op je pc.
  • terraform init uitvoeren om de provider te downloaden
  • terraform plan uitvoeren om te zien wat gaat gebeuren eens je gaat voor apply kiezen
  • terraform apply uitvoeren: mogelijks zal je de melding krijgen dat je eerst nog de 'cloud resource manager api' moet activeren. Doe dat dan uiteraard ook via Terraform

De output lijkt dan vermoedelijk op onderstaande:

Terraform will perform the following actions:

# google_project_iam_binding.project will be created
+ resource "google_project_iam_binding" "project" {
+ etag = (known after apply)
+ id = (known after apply)
+ members = [
+ "user:roel.vansteenberghe@ikdoeict.be",
+ "user:sven.knockaert@ikdoeict.be",
]
+ project = "**************"
+ role = "roles/editor"
}

Plan: 1 to add, 0 to change, 0 to destroy.
tip

Terraform verwacht de .tf bestanden in eenzelfde map. Je kan ook gewoon alles in hetzelfde bestand plaatsen, maar dat zal al snel onoverzichtelijk worden.

Maak dus liever een aantal kleinere bestanden met een duidelijke naam aan.

voorbeeld:

provider.tf
cloudrun.tf
bigquery.tf
...

Naamgeving van het project

Hernoem je GCP-project indien nodig ook naar labci-2425-VOORNAAM-NAAM. (De project-id kan je niet veranderen.) Dat zou makelijk kunnen via de grafische console of de command line, maar om manueel werk te vermijden doen we ook deze stap met Terraform.

Gebruik variabelen

Als bovenstaande gelukt is, heb je vermoedelijk enkele keren de project_id moeten gebruiken. Maak een bestand aan (variables.tf) waarin de variabele project_id wordt gedeclareerd, en een bestand (terraform.tfvars) waarin je die variabele de juiste waarde geeft. Gebruik vanaf nu steeds overal deze variabele zodat je deze terraform ook makkelijk zou kunnen gebruiken voor andere GCP-projecten.

Activatie van services

Tijdens het lab zullen we een aantal api's gebruiken binnen Google Cloud. Om dat te kunnen doen moeten die eerst geactiveerd worden, maar dat merkte je eerder in de opdracht reeds. Om vlot te werken kan je best alle api's al activeren die we nodig hebben voor dit lab.

  • cloudresourcemanager.googleapis.com (had je al nodig)
  • artifactregistry.googleapis.com
  • run.googleapis.com
  • cloudfunctions.googleapis.com
  • pubsub.googleapis.com