Terraform OVH provider
Find a file
Jérémy Dubus e78a9cc241
Merge pull request #1202 from ovh/dev/jdubus/containerregistry-startup-states
fix: additional pending state + replace deprecated functions
2026-01-09 09:42:45 +01:00
.cds chore: Add missing IAM tests in CDS build 2025-10-28 13:22:52 +00:00
.github chore: typo in the pull request template 2025-10-27 10:02:36 +00:00
docs Merge pull request #1179 from zp-forks/feat/support-eco-servers 2026-01-08 17:05:44 +01:00
examples Merge pull request #1170 from pascalinthecloud/feat/iam-policy-conditions-and-expire-at 2026-01-02 15:31:25 +01:00
LICENSES licenses: generate Mon Jun 9 10:51:54 UTC 2025 2025-06-09 10:51:54 +00:00
ovh fix: additional pending state + replace deprecated functions 2026-01-09 08:39:13 +00:00
scripts Fix Changelog Links Script for ovh provider 2017-06-26 13:59:37 -04:00
templates Merge pull request #1179 from zp-forks/feat/support-eco-servers 2026-01-08 17:05:44 +01:00
vendor chore(deps): bump golang.org/x/crypto from 0.38.0 to 0.45.0 2025-11-20 02:08:20 +00:00
.gitignore feat: add conditions and expiration support to IAM policies 2025-12-29 15:14:42 +01:00
.gitpod.yml feat: update CHANGELOG for 0.20.0 2022-09-08 08:52:39 +00:00
.go-version Update outdated Golang version in .go-version 2024-04-01 19:23:13 +02:00
.goreleaser.yml fix: ci: bump golang version + change import path on ldflags to have proper version + commit pushed in User-Agent 2025-09-24 17:36:55 +00:00
.tool-versions fix: ci: bump golang version + change import path on ldflags to have proper version + commit pushed in User-Agent 2025-09-24 17:36:55 +00:00
CHANGELOG.md Add changelog for v2.10.0 2025-11-27 05:57:52 +00:00
CODEOWNERS fix: update CODEOWNERS 2025-01-21 11:02:54 +00:00
CONTRIBUTING.md doc: Fix missing templates + add documentation process in CONTRIBUTING.md 2025-08-21 12:32:30 +00:00
GNUmakefile increase timeout to 10hours for testacc (was timeouting at 4 hours) 2023-03-14 14:57:36 +01:00
go.mod chore(deps): bump golang.org/x/crypto from 0.38.0 to 0.45.0 2025-11-20 02:08:20 +00:00
go.sum chore(deps): bump golang.org/x/crypto from 0.38.0 to 0.45.0 2025-11-20 02:08:20 +00:00
LICENSE initial commit 2017-06-05 20:53:56 +00:00
main.go Changes for v2.0.0 new major + CHANGELOG 2025-03-04 10:33:09 +00:00
README.md feat(okms): add datasource and resource okms_secret 2025-10-29 15:04:10 +01:00

Terraform OVH Provider

The OVH Provider allows Terraform to manage OVH resources.

License GitHub release (latest by date) Release Date Terraform Provider Downloads Website

Requirements

  • Terraform 0.12.x
  • Go 1.20 (to build the provider plugin)

Building The Provider

Clone repository to: $GOPATH/src/github.com/ovh/terraform-provider-ovh

$ mkdir -p $GOPATH/src/github.com/terraform-providers/; cd $GOPATH/src/github.com/terraform-providers/
$ git clone git@github.com:ovh/terraform-provider-ovh

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/ovh/terraform-provider-ovh
$ make build

Using the provider

Please see the documentation in the Terraform registry.

Or you can browse the documentation within this repo here.

Using the locally built provider

Configure a dev override in your .terraformrc to be able to test the local version of the provider you built. If not already present, create a terraformrc file and add a dev override for the ovh provider.

$ cat > ~/.terraformrc <<EOF
provider_installation {
  dev_overrides {
    "ovh/ovh" = "$GOPATH/bin/"
  }

  direct {}
}
EOF

Build the provider.

# Set your target environment (OS_architecture): linux_amd64, darwin_amd64...
$ export ENV="linux_amd64"
$ make build

Create a Terraform configuration with the following provider configuration.

$ mkdir ~/test-terraform-provider-ovh
$ cd ~/test-terraform-provider-ovh
$ cat > providers.tf <<EOF
# Configure the OVHcloud Provider
terraform {
  required_providers {
    ovh = {
      source = "ovh/ovh"
      version = ">= 2.7.0"
    }
  }
}

provider "ovh" {
}
EOF

# Export OVHcloud API credentials
$ export OVH_ENDPOINT="..."
$ export OVH_APPLICATION_KEY="..."
$ export OVH_APPLICATION_SECRET="..."
$ export OVH_CONSUMER_KEY="..."

# Initialize your project and remove existing dependencies lock file
$ rm .terraform.lock.hcl && terraform init
...

# Apply your resources & datasources
$ terraform apply
...

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.8+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make build
...
$ $GOPATH/bin/terraform-provider-ovh
...

Testing the Provider

In order to test the provider, you can simply run make test.

$ make test

In order to run the full suite of Acceptance tests you will need to have the following list of OVH products attached to your account:

You will also need to setup your OVH API credentials. (see documentation)

Once setup, please follow these steps to prepare an environment for running the Acceptance tests:

$ cat > ~/.ovhrc <<EOF
# setup ovh api credentials
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="..."
export OVH_APPLICATION_SECRET="..."
export OVH_CONSUMER_KEY="..."
EOF
$ source ~/.ovhrc

In order for all the tests to pass you can run:

export OVH_IP_TEST="..."
export OVH_IP_BLOCK_TEST="..."
export OVH_IP_REVERSE_TEST="..."
export OVH_IP_MOVE_SERVICE_NAME_TEST="..."
export OVH_IPLB_SERVICE_TEST="..."
export OVH_CLOUD_PROJECT_SERVICE_TEST="..."
export OVH_CLOUD_PROJECT_REGION_TEST="..."
export OVH_CLOUD_PROJECT_LOADBALANCER_TEST="..."
export OVH_CLOUD_PROJECT_FAILOVER_IP_TEST="..."
export OVH_CLOUD_PROJECT_FAILOVER_IP_ROUTED_TO_1_TEST="..."
export OVH_CLOUD_PROJECT_FAILOVER_IP_ROUTED_TO_2_TEST="..."
export OVH_VRACK_SERVICE_TEST="..."
export OVH_ZONE_TEST="..."
export OVH_DOMAIN_NS1_HOST_TEST="..."
export OVH_DOMAIN_NS1_IP_TEST="..."
export OVH_DOMAIN_NS2_HOST_TEST="..."
export OVH_DOMAIN_NS3_HOST_TEST="..."
export OVH_DOMAIN_DS_RECORD_ALGORITHM_TEST="..."
export OVH_DOMAIN_DS_RECORD_PUBLIC_KEY_TEST="..."
export OVH_DOMAIN_DS_RECORD_TAG_TEST="..."
export OVH_OKMS="..."

$ make testacc

To run only one acceptance test, you can run:

$ make testacc TESTARGS="-run TestAccCloudProjectKubeUpdateVersion_basic"

To run one acceptance test and bypass go test caching:

$ TF_ACC=1 go test -count=1 $(go list ./... |grep -v 'vendor') -v -run  TestAccCloudProjectKubeUpdateVersion_basic -timeout 600m -p 10

To remove dangling resources, you can run:

$ make testacc TESTARGS="-sweep"

Contributing

Please read the contributing guide to learn about how you can contribute to the OVHcloud Terraform provider ;-).
There is no small contribution, don't hesitate!

Our awesome contributors: