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
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
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 :
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).
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 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.
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.
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
.
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.
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
.
Entrez une description de l'utilisateur que vous souhaitez créer, par exemple Terraform
et cliquez sur Suivant
.
Vérifiez le rôle ObjectStore operator
et cliquez sur Confirmer
.
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.
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
.
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
.
Dans la barre latérale, cliquez sur API Access
.
Cliquez sur le bouton Télécharger un fichier
RC OpenStack, puis sur OpenStack clouds.yaml File
.
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 :
clouds.yaml
dans le répertoire de travail courant de vos fichiers Terraform~/.config/openstack
/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
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.
Échangez avec notre communauté d'utilisateurs sur https://community.ovh.com/.
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..
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