OPCP - Comment utiliser Terraform
Objectif
Terraform est un outil open source d'Infrastructure as Code (IaC) développé par HashiCorp. Il permet de décrire et de provisionner votre infrastructure de manière déclarative à partir de fichiers de configuration, écrits en HashiCorp Configuration Language (HCL).
L'offre OPCP reposant sur OpenStack, vous pouvez utiliser le provider Terraform OpenStack afin d'automatiser le déploiement de vos ressources : instances, réseaux, volumes, paires de clés, etc.
Ce guide est également valable avec OpenTofu, le fork open source de Terraform maintenu par la Linux Foundation. OpenTofu est compatible avec la syntaxe HCL et les providers Terraform : il vous suffit de remplacer la commande terraform par tofu dans les exemples ci-dessous.
Ce guide détaille les étapes nécessaires pour générer une Application Credential depuis Horizon, configurer Terraform et déployer un premier serveur sur votre infrastructure OPCP.
Prérequis
- Disposer d'un service OPCP actif.
- Posséder un compte utilisateur avec les droits suffisants pour se connecter à Horizon sur l'offre OPCP.
- Avoir installé Terraform (version >= 1.0) ou OpenTofu sur votre poste de travail.
- Disposer d'une paire de clés SSH sur votre poste local pour accéder à votre instance.
- Avoir préalablement créé un réseau privé dans votre projet OPCP (voir le guide « Comment installer une instance depuis l'interface Horizon »).
Sommaire
- 1. Création d'une Application Credential depuis Horizon
- 2. Préparation de l'environnement Terraform
- 3. Création d'un serveur
- 4. Configurations complémentaires sur le nœud (RAID, LACP)
- 5. Suppression de l'infrastructure
- 6. Dépannage
- 7. Références
En pratique
1. Création d'une Application Credential depuis Horizon
Pour permettre à Terraform de communiquer avec votre infrastructure OPCP, il est nécessaire de générer un couple Application Credential (id / secret) depuis l'interface Horizon. Ce mécanisme évite l'utilisation directe de vos identifiants Keycloak et fournit une authentification dédiée à vos automatisations, avec un périmètre de droits limité au projet courant.
Une Application Credential est automatiquement supprimée lorsque l'utilisateur qui l'a créée est révoqué. Pour éviter toute perte d'accès dans un workflow d'automatisation, ne générez pas d'Application Credential depuis un compte utilisateur nominatif ou facilement révocable ; privilégiez un compte dédié.
Connexion à Horizon
Connectez-vous à l'interface Horizon de votre environnement OPCP, puis sélectionnez le projet dans lequel vous souhaitez déployer vos ressources via Terraform. Pour plus d'informations, consultez le guide « Mise en route de votre OPCP ».
Création de l'Application Credential
Dans le menu de gauche, cliquez sur Identity, puis sur Application Credentials.
Cliquez sur + Create Application Credential.
Renseignez les champs suivants :
Cliquez sur Create Application Credential.
Une fois la fenêtre fermée, le secret ne sera plus accessible. Téléchargez le fichier clouds.yaml ou openrc proposé par Horizon, ou copiez les valeurs id et secret dans un emplacement sécurisé.
Pour la suite de ce tutoriel, téléchargez le fichier openrc : il sera utilisé à l'étape suivante pour authentifier Terraform auprès de votre infrastructure OPCP.
2. Préparation de l'environnement Terraform
Création du dossier de travail
Créez un répertoire dédié à votre projet Terraform :
Définition du provider OpenStack
Dans un fichier nommé provider.tf, ajoutez les lignes suivantes :
Aucun paramètre n'est nécessaire dans le bloc provider : le provider OpenStack récupère automatiquement les informations d'authentification depuis les variables d'environnement OS_*.
Chargement des variables d'environnement OpenStack
Lors de la création de votre Application Credential, Horizon vous a proposé le téléchargement d'un fichier clouds.yaml ou openrc. Le plus simple est de charger ce fichier openrc.sh dans votre shell avant d'exécuter Terraform :
Le fichier openrc.sh exporte notamment OS_AUTH_URL, OS_REGION_NAME, OS_APPLICATION_CREDENTIAL_ID et OS_APPLICATION_CREDENTIAL_SECRET. Ces variables seront automatiquement utilisées par le provider OpenStack de Terraform.
Initialisation
Téléchargez les plugins du provider OpenStack :
3. Création d'un serveur
Dans un fichier main.tf, déclarez les ressources nécessaires pour créer une instance attachée à un réseau privé existant :
Les noms d'images, de flavors et de réseaux disponibles peuvent être listés depuis Horizon ou avec la CLI OpenStack (openstack image list, openstack flavor list, openstack network list). Pour configurer la CLI, consultez le guide « Comment utiliser les API et obtenir les informations d'identification ».
Vérification du plan
Avant tout déploiement, prévisualisez les actions qui seront effectuées :
Application de la configuration
Déployez l'instance avec la commande suivante :
Confirmez avec yes lorsque Terraform vous le demande. Une fois la création terminée, l'instance apparaît dans la section Compute > Instances de l'interface Horizon.
4. Configurations complémentaires sur le nœud (RAID, LACP)
Certaines configurations doivent être appliquées sur le nœud baremetal avant le déploiement de l'instance et ne sont pas couvertes par le provider Terraform OpenStack. Elles nécessitent des droits admin Ironic (ou des nœuds transférés dans votre projet) et restent à effectuer via la CLI OpenStack.
RAID logiciel : pour configurer un RAID logiciel sur un nœud baremetal, consultez le guide « Comment configurer un RAID logiciel sur un nœud ». L'attribut target_raid_config n'est pas exposé par la ressource openstack_baremetal_node_v1. Cette opération est à réaliser avant le terraform apply qui déploie l'instance, en ciblant ensuite le nœud configuré via availability_zone = "nova::<node-id>".
LACP / bonding : pour agréger plusieurs interfaces réseau d'un nœud, consultez le guide « Comment configurer LACP sur un nœud ». La configuration des ports baremetal et du bonding n'est pas gérable de manière déclarative par le provider Terraform OpenStack. Cette opération est à réaliser avant le terraform apply qui déploie l'instance.
5. Suppression de l'infrastructure
Pour supprimer l'ensemble des ressources créées via Terraform :
terraform destroy ne réinitialise pas les configurations RAID ou LACP appliquées sur le nœud. Pour les retirer, suivez la section dédiée du guide correspondant via la CLI OpenStack.
6. Dépannage
7. Références
- Documentation officielle Terraform
- Documentation officielle OpenTofu
- Provider Terraform OpenStack
- Ressource openstack_compute_instance_v2
- OpenStack Application Credentials
Aller plus loin
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Échangez avec notre communauté d'utilisateurs.