Aller au contenu

Lab 06 : Utilisation des Workspaces

Les workspaces Terraform vous permettent de stocker votre état Terraform (terraform.tfstate) dans plusieurs espaces de travail distincts et nommés. Terraform commence avec un seul workspace appelé default et si vous ne spécifiez jamais explicitement un espace de travail, l’espace de travail par défaut est celui que vous utiliserez tout le temps.

Dans cet atelier vous allez apprendre à créer et utiliser des Workspaces pour la création de ressources dans le Cloud Outscale.

  • Terraform doit être installé et fonctionnel
  • Vous devez disposez de vos identifiants API (Acces Key et Secret Access Key) pour authentifier les appels d’API effectués par Terraform.

Vous allez procéder comme suit:

L’étape 1 consiste à:

  • Initier un projet Terraform et le configurer pour utiliser votre compte Outscale
  • Créer une paire de clef SSH
  • Configurer un backend S3 pour stocker le fichier state de manière sécurisée dans le stockage objet Outscale (OOS)
  • Créer une machine virtuelle
  • Vérifier que le fichier Terraform state du workspace default est stocké à l’endroit spécifié dans le paramètre Key du backend S3.

L’étape 2 consiste à créer de nouveaux workspaces et créer des ressources dedans

L’étape 3 consiste à vérifier comment les fichiers Terraform state de nouveaux workspaces sont stockés et gérés dans le backend S3 spécifié.

Connexion de Terraform avec le cloud provider Outscale

Section intitulée « Connexion de Terraform avec le cloud provider Outscale »

Commencez par créer le fichier de configuration du provider, config.tf

terraform {
required_providers {
outscale = {
source = "outscale/outscale"
version = "0.10.0"
}
}
}
provider "outscale" {
access_key_id = var.access_key_id
secret_key_id = var.secret_key_id
region = var.region
}

Ensuite créez le fichier des variables variables.tf nécessaires pour la connexion avec le provider Outscale et qui vont contenir :

  • L’ID de la clef d’accès au compte Outscale
  • L’ID de la clef secrète du compte Outscale
  • La région du compte Outscale
  • L’ID de l’image (OMI)
  • Le type de la VM

Puis, dans le fichier terraform.tfvars donnez des valeurs aux variables.

Faire de façon identique aux labs précédents

Dans le fichier vm.tf vous allez configurer le backend S3 qui servira pour stocker le fichier state de manière sécurisée dans le stockage objet Outscale (OOS)

terraform {
backend "s3" {
profile = "demo"
bucket = "lab05-terraform-state"
key = "exemple-workspaces/terraform.state"
region = "eu-west-2"
endpoints = {
s3 = "https://oos.eu-west-2.outscale.com"
iam = "https://eim.eu-west-2.outscale.com"
}
skip_region_validation = true
skip_credentials_validation = true
skip_metadata_api_check = true
skip_s3_checksum = true
}
}

Maintenant, vous allez pouvoir initier votre projet Terraform avec la commande suivante :

Terminal window
terraform init

Dans le même fichier vm.tf vous allez:

  • Créer une machine virtuelle hors VPC, juste pour simplifier, avec uniquement un groupe de sécurité personnalisé.

Il doit contenir une seule règle de test pour autoriser une connexion SSH à partir de partout.

Vous pouvez ensuite exécuter la commande terraform plan pour voir les modifications que Terraform effectuera et vérifier que vous n’avez pas des erreurs.

Terminal window
terraform plan

Si tout est bon, vous pouvez lancer l’exécution avec la commande terraform apply.

L’état de ce déploiement est stocké dans le workspace par default.

Vous pouvez le confirmer en exécutant la commande terraform workspace show, qui identifiera le workspace dans lequel vous vous trouvez actuellement :

Terminal window
terraform workspace show
default

Le workspace par défaut stocke votre état à l’emplacement que vous spécifiez via le paramètre key de la configuration du backend S3.

Créez un nouveau workspace nommé exemple-01 à l’aide de la commande suivante

Terminal window
terraform workspace new exemple-01
Created and switched to workspace "exemple-01"!

📌 NOTE
Vous serez directement basculé au nouveau workspace, pour le confirmer, vous pouvez exécuter à nouveau la commande terraform workspace show

Exécutez la commande terraform plan

Vous allez remarquer que l’exécution finira par échouer avec des erreurs de conflit au niveau de noms de ressources. La solution la plus adéquate est d’utiliser la variable terraform.workspace au niveau de noms des ressources.

Corrigez les erreurs et créez un second workspace.