Comment utiliser Terraform sur le Public Cloud OVHcloud
Objectif
OpenStack est un système d'exploitation de Cloud open source pour la création et la gestion de plateformes de cloud computing publiques et privées. Les composants logiciels OpenStack constituent la base de l'infrastructure Public Cloud de OVHcloud.
L'outil Open Source Terraform a été développé pour faciliter la création d'infrastructures de Cloud complexes. Il permet d'extraire les propriétés de votre infrastructure dans des fichiers texte qui peuvent servir de base au déploiement de votre infrastructure.
À titre d’exemple, la vidéo ci-dessous vous montre comment faire évoluer facilement le nombre d’instances, tout en conservant votre infrastructure existante, en ne modifiant qu’une seule ligne de code :
Découvrez comment utiliser Terraform sur le Public Cloud OVHcloud.
Prérequis
- Configurer un accès utilisateur à Horizon
- Préparer l’environnement pour utiliser l’API OpenStack
- Charger les variables d'environnement OpenStack
- Disposer de vos identifiants API et de votre clé d'autorisation OVHcloud
- Une clé SSH
- Le provider Terraform OpenStack
- Le provider Terraform OVHcloud
Accès à l'espace client OVHcloud
- Lien direct : Projets Public Cloud
- Pour accéder à vos services :
Public Cloud> Sélectionnez votre projet
Ce tutoriel est compatible avec les versions 0.14.0 et suivantes de Terraform.
En pratique
Les noms des images officielles pouvant être amenés à changer, il est préférable d'utiliser leurs IDs dans vos scripts d'installation.
Création de Token
Outre le end point de l'API, les clés nécessaires sont application_key, application_secret et consumer_key. Ces clés peuvent être générées via la page de génération de token OVHcloud.


Créer un environnement Terraform
Après l'installation de Terraform, pour tous les fichiers texte décrivant votre infrastructure :
Vous pouvez à présent créer un environnement Terraform avec la commande suivante. Cela vous permettra de créer et de gérer l'évolution de votre infrastructure.
Créer des ressources
Définir un fournisseur (provider)
Dans Terraform, vous spécifiez des « fournisseurs » (ou providers) pour votre environnement cloud. Un « fournisseur » (tel que OVHcloud) héberge vos ressources d'infrastructure OpenStack.
Dans un fichier nommé provider.tf, insérez les lignes suivantes :
Si vous ne souhaitez pas définir vos secrets dans le fichier de configuration Terraform, vous pouvez également les définir dans des variables d'environnement :
console
$ export OVH_ENDPOINT=ovh-eu
$ export OVH_APPLICATION_KEY=Your_key_application_OVH(or_AK)
$ export OVH_APPLICATION_SECRET=Your_secret_application_key_OVH(or_AS)
$ export OVH_CONSUMER_KEY=Your_token(or_CK)
Un « alias » est un identifiant unique pour un type de fournisseur. Par exemple, si vous avez deux fournisseurs OpenStack avec des informations d'identification différentes, vous devez spécifier chaque fournisseur dans la ressource.
Il faut maintenant créer un nouvel utilisateur OpenStack, puis générer le fichier OpenRC contenant tous les identifiants que vous souhaitez exporter en tant qu'environnement variables.
Chargez ce fichier, puis entrez le mot de passe de l'utilisateur que vous avez créé précédemment :
Vous devez maintenant initialiser votre espace de travail afin de télécharger les plugins du provider (fournisseur) :
Créer une instance
Dans Terraform, une « ressource » est un composant de votre infrastructure. Il peut s'agir d'une instance, d'un bloc de stockage, fourni par un fournisseur OpenStack ou un réseau fourni par le fournisseur OVHcloud.
Pour créer une instance simple, vous avez besoin de 4 éléments :
- Un nom d'instance
- Une image
- Un type d'instance (flavor)
- Une clé SSH
A des fins d'exemple, nous allons créer une instance simple sur Debian 10 avec la flavor d2-2, et importer une clé SSH. Ajoutez les lignes suivantes dans un fichier nommé simple_instance.tf :
Afin de voir ce qui va être ajouté/créé/supprimé dans votre infrastructure, vous pouvez utiliser :
Vous pouvez entrer la commande suivante pour importer votre clé SSH et créer votre première instance :
La sortie devrait ressembler à ceci :
Cliquez sur Instances.
Comme vous pouvez le voir, votre instance nommée "terraform_instance" est en train de se créer.
Notez que la création d'une seconde instance identique avec « terraform apply » ne fonctionnera pas.
Terraform applique les modifications uniquement s'il détecte une différence dans vos fichiers de configuration ou si un nouveau fichier est créé.
Créer des instances multiples
Dans cette partie, nous souhaitons créer une instance sous Ubuntu avec la flavor « d2-2 » dans chaque région.
Vous pouvez rechercher tous les noms de régions en utilisant cet appel API OVHcloud :
Nous utiliserons les régions OVHcloud suivantes pour cet exemple :
- GRA11
- SBG5
- BHS5
Vous pouvez créer trois ressources nommées « openstack_compute_instance_v2 » et modifier le paramètre de région pour chacune d'elles. Néanmoins, il peut devenir difficile de gérer des fichiers avec une grande quantité de ressources identiques.
C'est pour cela que Terraform propose un meta paramètre appelé « count ». Ce paramètre permet de préciser à Terraform de créer plusieurs fois une même ressource.
Pour ce faire, vous pouvez créer un fichier nommé multiple_instance.tf. Vous y définirez d'abord une variable contenant les trois régions, puis vous ajoutez un compteur de création d'instances :
Vérifiez les modifications à apporter à votre infrastructure à l'aide de la commande suivante :
Appliquez vos modifications à l'aide de la commande suivante :
Terraform peut créer plusieurs instances avec cette méthode, mais vous pouvez l'utiliser également pour modifier votre infrastructure actuelle.
Modifier une instance
Dans cet exemple, nous allons attacher un nouveau volume de stockage à notre première instance. Ouvrez et modifiez le fichier nommé simple_instance.tf, puis ajoutez les lignes suivantes :
Vérifiez les modifications à apporter à votre infrastructure à l'aide de la commande suivante :
Appliquez vos modifications à l'aide de la commande suivante :
Créer une instance dans le réseau OVHcloud (vRack)
Le plug-in Terraform OVHcloud peut gérer des réseaux privés, des sous-réseaux privés, des utilisateurs Public Cloud et des liaisons vRack. Dans cette partie, nous nous concentrerons sur la création du réseau.
Créez à présent un fichier create_private_network_instance.tf et insérez-y le contenu suivant :
Cette création d'instance est liée à la ressource openstack_compute_keypair_v2.test_keypair que vous avez créée précédemment dans ce guide.
Vérifiez les modifications à apporter à votre infrastructure à l'aide de la commande suivante :
Appliquez vos modifications à l'aide de la commande suivante :
Vous verrez apparaître dans votre projet Public Cloud une nouvelle instance, avec une interface publique et une interface privée.
Creation d'une infrastructure pour un site web
Dans cet exemple, nous allons créer une infrastructure de site Web de base à l'aide de Terraform et du réseau privé OVHcloud. Les composants créés sont les suivants :
- Un réseau privé
- Un sous-réseau
- 2 instances avec 2 interfaces réseau chacune : la première publique et la seconde privée, représentant les frontaux web
- 1 instance avec 1 interface réseau et 2 disques additionnels, représentant la BDD

Créez un fichier simple_web_site.tf et entrez les lignes suivantes :
Vérifiez les modifications à apporter à votre infrastructure à l'aide de la commande suivante :
Appliquez vos modifications à l'aide de la commande suivante :
Création d'un projet Public Cloud
Vous pouvez créer un projet OVHcloud Public Cloud par programmation à l'aide de Terraform.
Avant de créer un projet via Terraform, vous devez avoir créé au moins un projet Public Cloud via l'espace client OVHcloud.
Cette création initiale de projet est nécessaire pour :
- accepter les conditions générales d'utilisation du Public Cloud ;
- enregistrer et valider un moyen de paiement sur votre compte.
Si cette condition préalable n'est pas remplie, l'API renverra l'erreur suivante : "Found eligibility issues: challengePaymentMethod".
Dans ce cas, la création de projet via Terraform n'est pas possible.
Pour résoudre ce problème, vous devez :
- Créer manuellement un projet Public Cloud depuis l'espace client OVHcloud.
- Effectuer la vérification de propriété du moyen de paiement (le défi exact dépend du moyen de paiement et de la configuration du compte).
Une fois cette validation effectuée, vous pourrez créer des projets supplémentaires à l'aide de Terraform.
Créez un fichier nommé project.tf et saisissez les lignes suivantes :
Supprimer une infrastructure
Pour supprimer toutes les ressources, vous pouvez entrer la commande suivante :
Aller plus loin
Échangez avec notre communauté d'utilisateurs.