title | excerpt | updated |
---|---|---|
Using Terraform with OVHcloud |
Find out about useful resources in order to use Terraform with OVHcloud |
2023-09-27 |
Terraform is an open-source infrastructure as code (IaC) tool created by Hashicorp in 2014, written in Go. It aims at building, changing and version controlling your infrastructure. You can define and provision your infrastructure by writing the definition of your resources in Hashicorp Configuration Language (HCL).
It is widely used and you can also use it with OVHcloud.
At the heart of the Terraform product is the concept of provider which is a plugin that enables interaction with an API.
Based on your automation needs at OVHcloud, you have to pick one or more of the following Terraform providers:
- OVH provider that interacts with OVHcloud API portal. You can refer to this guide to learn more on how to use the API portal. Furthermore, the OVH provider evolves as fast as the OVHcloud offering, be sure to follow the releases.
- OpenStack provider : the open standard cloud computing platform that OVHcloud is using to power its Public Cloud service. For more information, check this page.
- Hashicorp AWS provider to automate the operations of the Object Storage.
- Hashicorp Kubernetes provider : once you have provisionned a Kubernetes cluster with OVH provider, you can manage your Kubernetes configuration with this provider.
- Hashicorp vSphere provider to automate the operations of VMware on OVHcloud solutions.
- Nutanix provider to automate the operations of OVHcloud Nutanix on OVHcloud.
OVHcloud console GUI (also called "Control Panel" or "Manager") hides some background API complexity to the user. From a GUI concept, it may be difficult to find the correct provider and the associated resource. The tables below are here to help.
[!primary]
- The following categories are based on the Control Panel 'New version (Beta)' from December 2022.
- If no resource is available but a Terraform data source is, this is mentioned in the table with "[data source]".
- When multiple resources are available for one GUI concept, only the main resource is provided in this list.
Control Panel concept | Terraform provider | Resource or Data Source |
---|---|---|
Dedicated Server | ovh | [data source] ovh_dedicated_server |
Virtual Private Server | ovh | ovh_vps |
HA-NAS | ovh | -[data source] ovh_dedicated_nasha - ovh_dedicated_nasha_partition |
Enterprise File Storage | ovh | not available |
Cloud Disk array | ovh | [data source] ovh_dedicated_ceph |
Veam Cloud Connect | not available | |
Logs Data Platform | ovh | partially available : - ovh_dbaas_logs_graylog_output_stream - ovh_dbaas_logs_input - [data source] ovh_dbaas_logs_input_engine |
Control Panel concept | Terraform provider | Resource or Data Source |
---|---|---|
VMware | - not available for ordering - vsphere for management |
see provider |
Nutanix | - not available for ordering - nutanix for management |
see provider |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Instances (VM & Metal) | openstack | openstack_compute_instance_v2 |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Block Storage | openstack | blockstorage_volume_v3 |
Object Storage (Swift) | openstack | objectstorage_object_v1 |
Object Storage | Hashicorp aws | aws_s3_bucket |
Object Storage users | ovh | ovh_cloud_project_user with objectstore_operator role |
Cloud Archive | openstack | objectstorage_object_v1 with storage_policy set to “PCA” in order to create an “archive” swift container |
Cold Archive | Hashicorp aws | aws_s3_bucket |
Databases | ovh | cloud_project_database and cloud_project_database_database |
Volume Snapshot | openstack | openstack_blockstorage_snapshot_v3 |
Volume Backup | openstack | [data source] openstack_blockstorage_volume_v3 |
Instance Backup | openstack | openstack_images_image_v2 |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Private network (vRack) | ovh & openstack | - ovh_vrack_cloudproject - openstack_networking_network_v2 - openstack_networking_subnet_v2 - ovh_cloud_project_network_private - ovh_cloud_project_network_private_subnet |
Load Balancer | openstack | openstack_lb_loadbalancer_v2 |
Public IPs - Floating IPs | openstack | openstack_networking_floatingip_v2 |
Public IPs - Additional IPs | ovh | ovh_ip_service |
Gateway | openstack | openstack_networking_router_v2 |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Managed Kubernetes Service - Cluster operations | ovh | ovh_cloud_project_kube |
Managed Kubernetes Service - Application deployment operations | Hashicorp Kubernetes | kubernetes_namespace kubernetes_deployment |
Kubernetes Load Balancer | Hashicorp kubernetes | kubernetes_service as described in this tutorial |
Managed Private Registry | ovh | ovh_cloud_project_containerregistry ovh_cloud_project_containerregistry_user |
Workflow Management | ovh | cloud_project_workflow_backup |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
AI Notebooks | not available but ovhai CLI can help for automation | |
AI Training | not available but ovhai CLI can help for automation | |
AI Deploy | not available but ovhai CLI can help for automation |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Data Processing | not available | |
Logs Data Platform | ovh | partially available : - ovh_dbaas_logs_graylog_output_stream - ovh_dbaas_logs_input - ovh_dbaas_logs_cluster - [data source] ovh_dbaas_logs_input_engine |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Users & Roles | ovh | ovh_cloud_project_user |
Quotas & Regions | not available | |
SSH keys | ovh & openstack | ovh_me_ssh_key. If you use the openstack provider for compute, you will need to use openstack_compute_keypair_v2 to manage the ssh keys |
Project Settings | ovh | ovh_cloud_project |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Domain name | ovh | ovh_domain_zone |
DNS Zone record | ovh | ovh_domain_zone_record |
DNS Server | not available | |
Redirection | ovh | ovh_domain_zone_redirection |
DynHost | not available | |
GLUE Record | not available |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Hosting plan | not available | |
Database | ovh | ovh_hosting_privatedatabase |
Emails | not available | |
Microsoft | not available |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
vRack private network | ovh | ovh_vrack |
Public IP Adresses - Additional IPs | ovh | ovh_ip_service |
OVH Cloud Connect | not available | |
Load Balancer | ovh | ovh_iploadbalancing |
CDN Infrastructure | not available |
This universe is currently not supported by Terraform providers
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Profile | ovh | [data source] ovh_me |
Payment method | ovh | - [data source] ovh_me_paymentmean_bankaccount - [data source] ovh_me_paymentmean_creditcard |
Control Panel concept | Terraform provider(s) | Resource or Data Source |
---|---|---|
Policies | ovh | ovh_iam_policy |
Identities | ovh | - ovh_me_identity_user - ovh_me_identity_group |
Resource groups | not available |
- Public Cloud examples repository on GitHub
- Creating a kubernetes cluster on Terraform
- Creating a private registry (Harbor) through Terraform
- Using OVHcloud High Performance (S3) Object Storage as Terraform Backend to store your Terraform state
- Registry entry
- Documentation
- Source code on GitHub (contributions are welcome)