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