The OVH Provider allows Terraform to manage OVH resources.
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
Please see the documentation in the Terraform registry.
Or you can browse the documentation within this repo here.
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
...
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
...
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:
- a Vrack
- a Load Balancer
- a registered Domain
- a Cloud Project
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="..."
$ 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"
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: