Gebruikers en groepen handmatig in de console beheren werkt, maar het is niet reproduceerbaar, niet auditeerbaar en foutgevoelig. Met infrastructure as code beschrijf je je Workspace-organisatie declaratief, bewaar je het in Git en pas je wijzigingen gecontroleerd toe. Terraform is hiervoor een logische keuze, en er is een provider speciaal voor Workspace.
In dit artikel beheer je je organisatie als code, met een eerlijke blik op de huidige staat van de provider.
De officiele provider is gearchiveerd
HashiCorp heeft de officiele provider hashicorp/googleworkspace op 30 juni 2025 gearchiveerd. De repository is alleen-lezen, issues en pull requests worden niet meer behandeld en er komen geen nieuwe releases. De laatste release is v0.7.0 uit juni 2022. De bestaande binaries en documentatie blijven beschikbaar, dus de provider werkt nog, maar je krijgt geen updates of bugfixes meer.
Weeg dit risico bewust mee. Opties zijn: de v0.7.0-provider blijven gebruiken met een vastgepinde versie, overstappen op een onderhouden community-fork, of bepaalde resources via een ander mechanisme beheren. Controleer altijd de actuele status voordat je dit in productie inzet.
Waarom Workspace als code
Declaratief beheer brengt grote voordelen voor IT-teams.
- Je organisatiestructuur staat in Git, met volledige historie en review via pull requests.
- Wijzigingen zijn reproduceerbaar tussen omgevingen.
- Drift wordt zichtbaar: Terraform toont verschillen tussen gewenst en werkelijk.
- Onboarding en offboarding worden code-changes in plaats van handmatige klikpaden.
Pin altijd je provider-versie
Juist omdat de provider niet meer actief wordt onderhouden, is het belangrijk om de versie expliciet vast te pinnen in een required_providers-blok. Zo voorkom je dat een onverwachte upgrade je configuratie breekt, en blijft je opzet reproduceerbaar.
Authenticatie opzetten
De provider authenticeert met een service account dat een beheerder impersoneert via domain-wide delegation. Je hebt hiervoor een super admin nodig die de delegation goedkeurt.
Authenticatie configureren
- Maak een service account aan in Google Cloud en download de JSON-sleutel.
- Laat een super admin het service account domain-wide delegation geven met de juiste Admin SDK Directory-scopes.
- Lever de sleutel via de omgevingsvariabele
GOOGLEWORKSPACE_CREDENTIALS, nooit hardcoded in je code. - Configureer de provider met
customer_idenimpersonated_user_email(een beheerder met toegang tot de Admin APIs). - Draai
terraform initom de provider te installeren en daarnaterraform planop een kleine resource als test.
Een minimale provider-configuratie ziet er zo uit:
terraform {
required_providers {
googleworkspace = {
source = "hashicorp/googleworkspace"
version = "0.7.0"
}
}
}
provider "googleworkspace" {
customer_id = "C01abc234"
impersonated_user_email = "admin@jouwdomein.nl"
oauth_scopes = [
"https://www.googleapis.com/auth/admin.directory.user",
"https://www.googleapis.com/auth/admin.directory.group",
]
}
Een gebruiker en groep definieren
In HCL beschrijf je resources declaratief. Terraform bepaalt zelf welke API-calls nodig zijn om de gewenste toestand te bereiken.
resource "googleworkspace_user" "jan" {
primary_email = "jan.jansen@jouwdomein.nl"
name {
given_name = "Jan"
family_name = "Jansen"
}
org_unit_path = "/Verkoop"
}
resource "googleworkspace_group" "verkoop" {
email = "verkoop@jouwdomein.nl"
name = "Verkoopteam"
}
Beheer lidmaatschappen apart
Beheer lidmaatschappen met losse googleworkspace_group_member-resources of via een dynamische for_each over een lijst. Zo houd je de groepssamenstelling overzichtelijk in code en zie je in elke pull request precies wie wordt toegevoegd of verwijderd.
State veilig beheren
Terraform houdt de werkelijke toestand bij in een state-bestand. Dat bestand is gevoelig.
State bevat gevoelige gegevens
Het Terraform-state-bestand kan gevoelige gegevens bevatten, zoals e-mailadressen en interne structuur. Bewaar het nooit lokaal of in Git, maar in een beveiligde remote backend zoals een Cloud Storage-bucket met versioning en encryptie. Beperk de toegang strikt en schakel state-locking in om gelijktijdige wijzigingen te voorkomen.
De workflow
Een gecontroleerde workflow zorgt dat elke wijziging gereviewd en gedocumenteerd is.
Van wijziging naar productie
- Een wijziging begint als een aanpassing in de HCL-bestanden.
- Je opent een pull request zodat een collega het kan reviewen.
terraform plantoont exact welke wijzigingen worden doorgevoerd.- Na goedkeuring draait
terraform apply, idealiter in een CI-pijplijn. - De state wordt bijgewerkt en de wijziging is gedocumenteerd in Git.
Veelgestelde vragen
Kan ik bestaande gebruikers importeren in Terraform?
Ja, met terraform import koppel je bestaande Workspace-resources aan je configuratie zonder ze opnieuw aan te maken. Voeg eerst het resource-blok toe en importeer daarna op basis van het ID.
Wat gebeurt er als ik een resource uit de config verwijder?
Bij de volgende apply verwijdert Terraform die resource ook in Workspace. Wees hier voorzichtig mee, vooral bij gebruikers, want een verwijderde gebruiker betekent verlies van toegang en mogelijk data.
Werkt dit voor alle Workspace-instellingen?
Nee. De provider dekt veelgebruikte resources zoals gebruikers, groepen, groepslidmaatschappen, OU's en domeinen, maar niet elke instelling. Controleer de provider-documentatie voordat je iets specifieks verwacht.
Hoe voorkom ik per ongeluk verwijderen van gebruikers?
Gebruik lifecycle-regels zoals prevent_destroy op kritieke resources, en review elke plan-output zorgvuldig voor je apply draait.
Is het verstandig om deze provider nu nog te gebruiken?
Het kan, maar met open ogen. De officiele provider is sinds 30 juni 2025 gearchiveerd en krijgt geen updates. Pin de versie vast, overweeg een onderhouden community-fork en controleer de actuele status voordat je dit in een productieomgeving inzet.
Wat is een alternatief als ik geen verouderde provider wil?
Je kunt een onderhouden fork zoeken op de Terraform Registry, de Admin SDK rechtstreeks aanspreken via eigen scripts, of bepaalde processen via Workspace-tooling regelen. Welke past, hangt af van je risicobereidheid en hoeveel je declaratief wilt beheren.
Met Terraform beheer je je Workspace-organisatie als code: reproduceerbaar, reviewbaar en met een complete historie in Git. Houd daarbij rekening met de gearchiveerde status van de provider en kies bewust hoe je dat risico opvangt.