Utiliser OVHcloud Object Storage comme Backend Terraform pour stocker votre état (state) Terraform

Découvrez comment utiliser l’Object Storage d’OVHcloud comme Backend Terraform pour stocker votre état (state) Terraform

Dernière mise à jour le 09/05/2022

Objectif

Il est possible de stocker l’état de Terraform (le tfstate) dans un data store/backend distant comme un compartiment /bucket AWS S3, un Google Cloud Storage (GCS). Mais savez-vous que vous pouvez également stocker vos états Terraform dans un conteneur OVHcloud Object Storage ?

Dans ce tutoriel, vous allez :

  • Créer un conteneur Object Storage
  • Créer un backend Terraform distant
  • Créer un utilisateur OpenStack avec les droits Object Storage et récupérer ses identifiants OpenStack
  • Initialiser votre backend Terraform

Prérequis

Avant de commencer

  • Vous devez avoir installé Terraform CLI, version 0.12.x minimum, sur votre machine. Vous pouvez l'installer en suivant les instructions d'installation détaillées ou avec l'outil tfenv.

Terraform

Terraform est un outil open source d’Infrastructure as Code (IaC) créé par Hashicorp en 2014 et écrit en Go. Il a pour but de construire, de modifier et de contrôler la version de votre infrastructure. Vous pouvez définir et provisionner votre infrastructure en écrivant la définition de vos ressources dans Hashicorp Configuration Language (HCL).

Terraform

Cet outil dispose d’une interface de ligne de commande (CLI) puissante et très intuitive. Si vous souhaitez tirer parti de vos connaissances sur Terraform CLI, consultez l'aide-mémoire.

Chez OVHcloud, nous avons créé un provider Terraform qui vous permet d'interagir et de gérer les ressources OVHcloud.

Terraform states et backend

Terraform a plusieurs concepts, dont celui de state (état).

Un état Terraform est un snapshot de votre infrastructure depuis la dernière exécution de la commande terraform apply. Par défaut, le fichier d'état est stocké localement dans un fichier terraform.tfstate. Mais l’usage courant, en environnement de production, est de le stocker à distance.

Terraform state schema

Vous pouvez par exemple stocker votre état Terraform dans un conteneur Object Storage d'OVHcloud.

Pour ce faire, vous devez configurer un backend dans vos fichiers de configuration Terraform HCL.

Les états Terraform ne sont pas chiffrés lorsqu'ils sont stockés dans un conteneur Object Storage.

Instructions

Création d'un conteneur/bucket Object Storage

Vous devez d’abord disposer d’un conteneur Object Storage. Si ce n’est pas le cas, suivez le tutoriel Création d’un conteneur Object Storage.

Pour ce guide, notre conteneur Object Storage s'appelle terraform-state et sa région GRA.

terraform state container in OVHcloud Object Storage

Initialisation de la configuration de Terraform

Créez un fichier backend.tf avec le contenu suivant :

terraform {
    backend "swift" {
        container = "terraform-state"
        region_name = "GRA"
        cloud = "tfstate"
        archive_container = "terraform-state-archive"
    }
}

Dans ce fichier, vous définissez un backend Swift Terraform dans la région GRA. N'hésitez pas à modifier ce paramètre si vous avez créé un conteneur Object Storage dans une autre région.

Nous utilisons également un fichier OpenStack clouds.yaml.

N'oubliez pas de définir un archive_container pour activer le versioning des objets dans Swift.

Création d'un utilisateur OpenStack avec les droits Object Storage

Afin de stocker vos états Terraform dans un Object Storage, et de manière générale si vous souhaitez interagir avec l'Object Storage, vous devez être en mesure de gérer un Object Storage.

Pour ce faire, vous allez créer un utilisateur OpenStack.

Connectez-vous à votre espace client OVHcloud, rendez-vous dans la section Public Cloud et sélectionnez le projet Public Cloud concerné.

Accédez à l'interface d'administration de vos clusters OVH Managed Kubernetes en cliquant sur Users & Roles dans le menu de gauche et cliquez sur + Add user.

Créer un utilisateur OpenStack

Entrez une description de l'utilisateur que vous souhaitez créer, par exemple Terraform et cliquez sur Suivant.

Créer un utilisateur OpenStack

Vérifiez le rôle ObjectStore operator et cliquez sur Confirmer.

Créer un utilisateur OpenStack

Votre utilisateur est en cours de création. L’identifiant et le mot de passe sont automatiquement générés et affichés dans votre espace client.

Créer un utilisateur OpenStack

Veillez à enregistrer le mot de passe affiché dans le message en vert, dans un gestionnaire de mots de passe, pour le moment. Le mot de passe ne pourra pas être récupéré par la suite. Cependant, il est toujours possible de créer un nouveau mot de passe en cliquant sur ... et en sélectionnant Générer un mot de passe.

Générer un mot de passe utilisateur OpenStack

Récupérer les identifiants OpenStack

Cliquez sur ... et sélectionnez Lancer OpenStack Horizon.

Entrez les informations d'utilisateur et de mot de passe que vous avez enregistrées, puis cliquez sur Connexion.

Connexion à Horizon

Dans la barre latérale, cliquez sur API Access.

Page d'accueil Horizon

Cliquez sur le bouton Télécharger un fichier RC OpenStack, puis sur OpenStack clouds.yaml File.

Accès API Horizon

Enregistrez le fichier clouds.yaml sur votre machine locale.

Il est nécessaire d’éditer le fichier généré clouds.yaml pour y renseigner tous les détails nécessaires à Terraform.

Modifiez ce fichier clouds.yaml comme ci-dessous :

clouds:
  tfstate:
    auth:
      auth_url: https://auth.cloud.ovh.net/v3/
      domain_name: default
      username: "user-xxxxxx"
      password: xxxxx
      project_domain_name: default
      project_name: "xxxxx"
      user_domain_name: default
    region_name: GRA

Si la ligne de mot de passe est manquante dans votre fichier clouds.yaml, nous vous invitons à l'ajouter en reprenant le mot de passe que vous avez copié/collé précédemment.

Terraform a besoin de savoir où se trouvent vos identifiants OpenStack (fichier clouds.yaml), plusieurs possibilités s'offrent à vous :

  • Placez le fichier clouds.yaml dans le répertoire de travail courant de vos fichiers Terraform
  • Placez-le dans ~/.config/openstack
  • Ou placez-le sur /etc/openstack

Quelle que soit la solution choisie, Terraform recherche automatiquement le fichier clouds.yaml.

Dans ce guide, nous choisissons de l'enregistrer à côté du fichier backend.tf :

.
├── backend.tf
└── clouds.yaml

Terraform Init

Vous pouvez maintenant initialiser votre configuration Terraform avec la commande terraform init.

La commande terraform init permet d'initialiser un répertoire de travail contenant les fichiers de configuration Terraform. Il s’agit de la première commande à exécuter après l’écriture d’une nouvelle configuration Terraform ou le clonage d’une configuration existante à partir du contrôle de version. Il est sûr d'exécuter cette commande plusieurs fois.

Cette commande initialise le backend (état distant ou local).

Après avoir exécuté cette commande, vous devriez obtenir un résultat comme ceci :

$ terraform init

Initializing the backend...

Successfully configured the backend "swift"! Terraform will automatically
use this backend unless the backend configuration changes.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Il est maintenant possible de définir vos fichiers de configuration et providers/fournisseurs Terraform et, après l'exécution de la commande terraform apply, votre fichier d'état Terraform sera stocké dans un conteneur de l'Object Storage d'OVHcloud.

Aller plus loin

Échangez avec notre communauté d'utilisateurs sur https://community.ovh.com/.


Cette documentation vous a-t-elle été utile ?

N’hésitez pas à nous proposer des suggestions d’amélioration afin de faire évoluer cette documentation.

Images, contenu, structure… N’hésitez pas à nous dire pourquoi afin de la faire évoluer ensemble !

Vos demandes d’assistance ne seront pas traitées par ce formulaire. Pour cela, utilisez le formulaire "Créer un ticket" .

Merci beaucoup pour votre aide ! Vos retours seront étudiés au plus vite par nos équipes..


Ces guides pourraient également vous intéresser...

OVHcloud Community

Accedez à votre espace communautaire. Posez des questions, recherchez des informations, publiez du contenu et interagissez avec d’autres membres d'OVHcloud Community.

Echanger sur OVHcloud Community

Conformément à la Directive 2006/112/CE modifiée, à partir du 01/01/2015, les prix TTC sont susceptibles de varier selon le pays de résidence du client
(par défaut les prix TTC affichés incluent la TVA française en vigueur).