Gepubliceerd op in terraform opentofu ovh cloud

Aan de slag met OpenTofu/Terraform op Europese cloud OVH

Stap voor stap: OVH API-credentials instellen en je eerste Object Storage-bucket op Europese infrastructuur deployen met Terraform of OpenTofu.

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:

ProviderBeheert
ovh/ovhOVH-eigen: Kubernetes, private networks, vRack, DNS, Object Storage, databases
openstackCompute instances, block storage, keypairs, security groups, floating IP’s
hashicorp/awsS3-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-eu voor 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:

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 /*:

MethodePadWaarom
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

  1. Laad je .env: source .env
    Controleer: echo $OVH_ENDPOINT en echo $TF_VAR_service_name.

  2. Init: tofu init of terraform init

  3. Plan: tofu plan of terraform plan
    Je zou iets moeten zien als: Plan: 1 to add, 0 to change, 0 to destroy.

  4. Apply: tofu apply of terraform apply
    Typ yes om te bevestigen.

  5. 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

CodeDatacenterLand
GRAGravelinesFrankrijk
SBGStrasbourgFrankrijk
BHSBeauharnoisCanada
DEFrankfurtDuitsland
UKLondenVerenigd Koninkrijk
WAWWarschauPolen

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_nameTF_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 .env in .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.

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.

#_

Dit artikel is geschreven door Stijn Meijers Founder & Data Architect bij Wolk

Gerelateerde artikelen

25 februari 2026

Jouw data staat in Amerika: waarom Europa een soeverein data platform nodig heeft

Europa mist een onafhankelijk data platform. Waarom digitale soevereiniteit nu urgent is en hoe DataBaas een Europees data platform bouwt.

21 januari 2026

Europese cloudproviders vergeleken: een hands-on Terraform-test (januari 2026)

Vier Europese cloudproviders getest zodat jij het niet hoeft te doen. Onboarding, Terraform, en waar je tegenaan loopt.