
Aan de slag met OpenTofu/Terraform op Europese cloud OVH
De recente handelsspanningen tussen de VS en de EU maken duidelijk waarom digitale soevereiniteit ertoe doet. Europese cloudalternatieven zoals OVHcloud zijn niet alleen relevant vanwege techniek of kosten, maar ook vanwege controle over waar je data staat en onder welke jurisdictie die valt.
Als je Infrastructure-as-Code gebruikt met Terraform of OpenTofu op OVHcloud, kan het opzetten van API-credentials en de eerste stappen best lastig zijn. Deze stap-voor-stapgids laat zien hoe je OVH API-tokens configureert en je eerste Object Storage-bucket op Europese infrastructuur uitrolt.
De provider-situatie (een beetje een zooitje)
Voor we beginnen: OVHcloud heeft geen enkele, eenduidige Terraform-provider. Afhankelijk van wat je wilt beheren, heb je meerdere providers nodig:
| Provider | Beheert |
|---|---|
| ovh/ovh | OVH-eigen: Kubernetes, private networks, vRack, DNS, Object Storage, databases |
| openstack | Compute instances, block storage, keypairs, security groups, floating IP's |
| hashicorp/aws | S3-compatible Object Storage (alternatief voor OVH-provider) |
OVHcloud Public Cloud draait op OpenStack, maar niet alles wordt via de OpenStack-API aangeboden. Daardoor wordt infrastructure-as-code wat complexer. In deze gids gebruiken we de native ovh/ovh-provider. Meer details: OVH Terraform-documentatie.
Wat je nodig hebt
De OVH Terraform-provider wil vier auth-parameters:
- OVH_ENDPOINT – Je OVH-regio (bijv.
ovh-euvoor Europa) - OVH_APPLICATION_KEY – API-applicatie-ID
- OVH_APPLICATION_SECRET – API-applicatiesecret
- OVH_CONSUMER_KEY – API-consumertoken met gedelegeerde rechten
Je hebt ook je Public Cloud Project ID nodig. Die vind je in het OVH Control Panel onder Project Settings.
OVH API-credentials aanmaken: stap voor stap
Stap 1: Ga naar de token-pagina
Ga naar de OVH API token-pagina voor jouw regio:
- Europa: https://eu.api.ovh.com/createToken/
- VS: https://api.us.ovhcloud.com/createToken/
- Canada: https://ca.api.ovh.com/createToken/
Log in met je OVHcloud-account.
Stap 2: Vul het formulier in
- Scriptnaam:
terraform-infrastructure(of iets herkenbaars) - Beschrijving: Optioneel
- Geldigheid: Onbeperkt of 30 dagen (handig voor automatisering)
Stap 3: API-rechten toekennen (cruciaal)
Voor volledige Terraform-functionaliteit heb je vier HTTP-methodes nodig. Voeg ze één voor één toe met de + knop. Gebruik voor allemaal het pad /*:
| Methode | Pad | Waarom |
|---|---|---|
| GET | /* | Resources lezen en Terraform state verversen |
| POST | /* | Nieuwe resources aanmaken |
| PUT | /* | Bestaande resources bijwerken |
| DELETE | /* | Resources opruimen |
Belangrijk:
- Voeg geen PATCH toe. Dat resulteert in een Internal Server Error in het OVH-formulier.
- Gebruik echt
/*als pad. Lege paden of alleen/cloud/*kunnen validatiefouten of vreemde toegangsproblemen geven.
Stap 4: Keys aanmaken en bewaren
Klik op "Create keys". Je krijgt drie waarden: Application Key (AK), Application Secret (AS), Consumer Key (CK). Bewaar ze meteen; het Application Secret wordt maar één keer getoond.
Je Terraform-project voor OVH inrichten
Wil je meteen naar de code? Zie de repo: github.com/wolkwork/ovh-tofu-example. Anders: lees verder.
Maak een map en ga erin:
mkdir ovh-terraform && cd ovh-terraform
Environment variables
Maak een .env met je OVH-credentials. Gebruik export per variabele:
# .env
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="your_application_key"
export OVH_APPLICATION_SECRET="your_application_secret"
export OVH_CONSUMER_KEY="your_consumer_key"
export TF_VAR_service_name="your_project_id"
Zet .env in je .gitignore:
echo ".env" >> .gitignore
Terraform-bestanden
provider.tf:
terraform {
required_version = ">= 1.0"
required_providers {
ovh = {
source = "ovh/ovh"
version = "~> 2.1"
}
}
}
provider "ovh" {
# Credentials komen uit OVH_* environment variables
}
variables.tf:
variable "service_name" {
description = "Je OVH Public Cloud project ID"
type = string
}
storage.tf:
resource "ovh_cloud_project_storage" "bucket" {
service_name = var.service_name
region_name = "GRA" # Gravelines, Frankrijk
name = "my-test-bucket"
}
Object Storage deployen met OpenTofu/Terraform
-
Laad je .env:
source .envControleer:echo $OVH_ENDPOINTenecho $TF_VAR_service_name. -
Init:
tofu initofterraform init -
Plan:
tofu planofterraform planJe zou iets moeten zien als:Plan: 1 to add, 0 to change, 0 to destroy. -
Apply:
tofu applyofterraform applyTypyesom te bevestigen. -
Controleren: Ga in het OVH Control Panel naar Public Cloud → Object Storage en bekijk je nieuwe bucket.
Opruimen
tofu destroy
# of
terraform destroy
Typ yes om te bevestigen.
Beschikbare OVH-regio's voor Object Storage
| Code | Datacenter | Land |
|---|---|---|
| GRA | Gravelines | Frankrijk |
| SBG | Strasbourg | Frankrijk |
| BHS | Beauharnois | Canada |
| DE | Frankfurt | Duitsland |
| UK | Londen | Verenigd Koninkrijk |
| WAW | Warschau | Polen |
Veelvoorkomende problemen en oplossingen
"unknown endpoint ''" – Je environment variables worden niet geëxporteerd. Zorg dat je .env overal export gebruikt en draai source .env.
Internal Server Error bij token-aanmaak – Haal PATCH uit de methodes en gebruik overal /* als pad.
"This call has not been granted" – Je token mist rechten. Maak een nieuwe token met GET, POST, PUT en DELETE, allemaal met pad /*.
"Invalid signature" – Je Application Secret klopt niet of is beschadigd. Controleer of OVH_APPLICATION_SECRET volledig is gekopieerd, zonder spaties of regeleinden.
Terraform vraagt om service_name – TF_VAR_service_name staat niet. Controleer met echo $TF_VAR_service_name en draai eventueel opnieuw source .env.
Security: goed om te doen
- Commit nooit credentials; houd
.envin.gitignore. - Gebruik environment variables; geen secrets in je Terraform-code.
- Roteer credentials regelmatig.
- Gebruik aparte tokens per omgeving (dev/staging/prod).
- Voor productie: overweeg een secret manager (bijv. HashiCorp Vault).
- Beperk de geldigheid van tokens waar mogelijk.
Handige links
OVH API-credentials voor Terraform hoeven niet ingewikkeld te zijn: vier HTTP-methodes (GET, POST, PUT, DELETE) met /*, credentials veilig in environment variables, en testen met een simpele Object Storage-deploy. Met Infrastructure-as-Code op OVHcloud maak je je cloudinfra reproduceerbaar, versioned en beheersbaar. Of je nu OpenTofu of Terraform gebruikt, de workflow is hetzelfde. Met OVH als Europese provider houd je de regie over waar je data staat.
Oorspronkelijk door Stijn Meijers op de Wolk Blog.