Getting started with Terraform for Public Cloud Databases
Objective
Public Cloud managed databases allow you to focus on building and deploying cloud applications while OVHcloud takes care of the database infrastructure and maintenance.
This guide explains how to order a MongoDB instance of a Public Cloud managed database service using Terraform.
Requirements
- Terraform >= 0.17.1 installed
- Access to the OVHcloud API (create your credentials by consulting this guide)
- A Public Cloud project in your OVHcloud account
Instructions
Step 1: Gather the OVHcloud required parameters
Getting your cluster/API tokens information
The "OVH provider" needs to be configured with a set of credentials:
- an
application_key - an
application_secret - a
consumer_key
Why?
Because, behind the scenes, the "OVH Terraform provider" is doing requests to OVHcloud APIs.
In order to retrieve this necessary information, please follow our First steps with the OVHcloud APIs tutorial.
Specifically, you have to generate these credentials via the OVHcloud token generation page with the following rights:

When you have successfully generated your OVHcloud tokens, please save them as you will have to use them very soon.
The last needed information is the service_name: it is the ID of your Public Cloud project.
How to get it?
In the Public Cloud section, you can retrieve your service name ID thanks to the Copy to clipboard button.

You will also use this information in Terraform resources definition files.
Step 2: Gather the set of required parameters
In order to create a new MongoDB cluster, you will need to specify at least:
- the version (e.g. "5.0")
- the region (e.g. "DE")
- the plan (e.g. "business")
- the flavor of the cluster (e.g. "db1-7")
Step 3: Create Terraform files
First, create a main.tf file defining the resources that will be created
Then, create a variables.tf file defining the variables used in main.tf:
Here, we defined the ovh-eu endpoint because we want to call the OVHcloud Europe API. Other endpoints exist, depending on your needs:
ovh-eufor OVHcloud Europe APIovh-cafor OVHcloud North-America API
Then, create a secrets.tfvars file containing the required variables values:
Don't forget to replace <service_name>, <application_key>, <application_secret>, <consumer_key>, <ip_range> by the real data.
Finally, create an outputs.tf file defining the resources that will be exported:
Step 4: Run
Now we need to initialise Terraform, generate a plan, and apply it.
The init command will initialize your working directory which contains .tf configuration files.
It’s the first command to execute for a new configuration, or after doing a checkout of an existing configuration in a given git repository for example.
The init command will:
- Download and install Terraform providers/plugins
- Initialise backend (if defined)
- Download and install modules (if defined)
Now, we can generate our plan:
Thanks to the plan command, we can check what Terraform wants to create, modify or remove.
The plan is OK for us, so let's apply it:
Finally export the user credentials and the URI
And, voilà, the MongoDB cluster is created.
How to deploy with other engines
In this guide, we explained how to deploy a MongoDB service but you can find example for other database engine here and tweak them according to your needs :
Go further
Managing a MongoDB service from the OVHcloud Control Panel
Configuring vRack for Public Cloud
Visit our dedicated Discord channel: https://discord.gg/ovhcloud. Ask questions, provide feedback and interact directly with the team that builds our databases services.
If you need training or technical assistance to implement our solutions, contact your sales representative or click on this link to get a quote and ask our Professional Services experts for a custom analysis of your project.
Join our community of users.