Aller au contenu

Déployer des ressources OpenStack avec Terraform

Ce guide explique comment utiliser Terraform pour interagir avec OpenStack sans installer le client openstack CLI.


Prérequis

  • Terraform installé : https://www.terraform.io/downloads
  • Un accès à un cloud OpenStack avec un fichier openrc (ou vos identifiants d'accès).
  • Un projet configuré dans OpenStack.
  • L’accès réseau aux API OpenStack (Keystone, Nova, etc.).

⚠️ Le client OpenStack (openstack CLI) n’est pas nécessaire. Terraform communique directement avec les API OpenStack.


Exemple de fichier openrc

Le fichier openrc.sh vous permet d’exporter les variables d’environnement nécessaires.

export OS_AUTH_URL=https://openstack.example.com:5000/v3
export OS_PROJECT_NAME="mon_projet"
export OS_USERNAME="mon_utilisateur"
export OS_PASSWORD="motdepasse"
export OS_USER_DOMAIN_NAME="Default"
export OS_PROJECT_DOMAIN_NAME="Default"
export OS_REGION_NAME="RegionOne"
export OS_IDENTITY_API_VERSION=3

Chargez-le dans votre terminal avant d'exécuter Terraform :

source openrc.sh

Exemple de fichier main.tf

provider "openstack" {
  auth_url    = var.auth_url
  tenant_name = var.tenant_name
  user_name   = var.user_name
  password    = var.password
  region      = var.region
  domain_name = var.domain_name
}

resource "openstack_compute_instance_v2" "vm_example" {
  name            = "ma-vm"
  image_name      = "Ubuntu 22.04"
  flavor_name     = "m1.small"
  key_pair        = "ma-cle-ssh"
  security_groups = ["default"]

  network {
    name = "reseau-prive"
  }
}

Exemple de fichier variables.tf

variable "auth_url" {}
variable "tenant_name" {}
variable "user_name" {}
variable "password" {}
variable "region" {}
variable "domain_name" {}

Fichier terraform.tfvars (si vous ne voulez pas utiliser openrc)

auth_url     = "https://openstack.example.com:5000/v3"
tenant_name  = "mon_projet"
user_name    = "mon_utilisateur"
password     = "motdepasse"
region       = "RegionOne"
domain_name  = "Default"

Commandes Terraform

terraform init
terraform plan
terraform apply

Liens utiles