Articles

Migrer l’État vers Terraform Cloud

Posted by admin

En tant qu’utilisateur actuel de l’interface de ligne de commande Terraform, vous êtes responsable de la gestion d’un fichier d’état en tant que source de vérité pour votre infrastructure cloud. Vous pouvez migrer votre fichier d’état local vers Terraform Cloud sans interrompre ni recréer votre infrastructure existante.

Avertissement : Lorsque vous téléchargez un fichier d’état sur Terraform Cloud en suivant les étapes de ce tutoriel, utilisez toujours la même version de l’interface de ligne de commande Terraform que vous avez utilisée pour créer les ressources. L’utilisation d’une version plus récente de Terraform peut mettre à jour le fichier d’état et provoquer une corruption du fichier d’état.

 » Prérequis

Ce tutoriel suppose que vous disposez des éléments suivants:

  • L’interface de ligne de commande Terraform installée localement
  • Un compte Terraform Cloud

Remarque : Comme le backend remote n’était pas pris en charge dans l’ancienne version de Terraform, vous devez utiliser la version 0.11.13 ou supérieure pour migrer votre état vers Terraform Cloud. Les extraits de ce tutoriel utilisent la syntaxe 0.12.

Si Terraform n’est pas installé localement, vous pouvez compléter ce tutoriel dans un laboratoire interactif à partir de votre navigateur Web. Lancez-le ici.

 » Créez l’état

Commencez par cloner ce référentiel GitHub.

$ git clone https://github.com/hashicorp/learn-state-migration

Copiez

Ensuite, changez dans le répertoire.

$ cd learn-state-migration

Copiez

Examinez le fichier main.tf dans le répertoire de travail pour obtenir un aperçu des ressources que vous êtes sur le point de créer. Cette configuration utilise la ressource random_pet pour générer et afficher un nom d’animal de compagnie aléatoire avec un nombre donné de mots. La longueur du nom est déterminée par la valeur de la variable name_length, qui par défaut est 3.

Dans une configuration réelle, vous pouvez avoir des variables supplémentaires telles que les informations d’identification de la plate-forme cloud définies dans un fichier .tfvars. Nous expliquerons comment définir ces valeurs dans l’espace de travail Terraform Cloud plus loin dans ce tutoriel, après avoir migré le fichier d’état.

## Terraform configurationterraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14"}variable "name_length" { description = "The number of words in the pet name" default = "3"}resource "random_pet" "pet_name" { length = var.name_length separator = "-"}output "pet_name" { value = random_pet.pet_name.id}

Copiez

Initialisez le répertoire.

$ terraform init

Copiez

Après l’initialisation de Terraform, appliquez la configuration et approuvez l’exécution en tapant « oui » à l’invite.

$ terraform apply

Copy

Terraform affichera un nom d’animal généré aléatoirement en trois mots.

« Configurez le backend distant

Maintenant que vous avez un fichier d’état local, vous devez créer un bloc de code backend dans votre configuration. Les moteurs indiquent à Terraform où charger et enregistrer son fichier d’état.

Terraform utilise le backend local par défaut si vous ne définissez pas explicitement de bloc de code backend dans votre configuration. Le backend local enregistre votre état en tant que fichier terraform.tfstate dans le répertoire où vous exécutez terraform apply. Pour migrer des fichiers d’état vers Terraform Cloud, définissez un backend remote dans votre configuration en ajoutant un nouveau bloc de code au début de votre fichier main.tf.

terraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14" backend "remote" { hostname = "app.terraform.io" organization = "<YOUR-ORG-NAME>" workspaces { name = "state-migration" } }}

Copiez

Remplacez les valeurs d’attribut organization et workspaces par le nom de votre organisation Terraform Cloud et le nom de l’espace de travail souhaité. Alors que l’organisation définie dans la strophe backend doit déjà exister, l’espace de travail n’est pas obligé de le faire ; Terraform Cloud le créera si nécessaire. Si vous choisissez d’utiliser un espace de travail qui existe déjà, l’espace de travail ne doit pas avoir d’états existants.

Remarque : Si vous êtes familier avec l’exécution de Terraform à l’aide de l’interface de ligne de commande, vous avez peut-être utilisé des espaces de travail Terraform. Les espaces de travail Terraform Cloud se comportent différemment des espaces de travail Terraform CLI. Les espaces de travail CLI Terraform permettent l’existence de plusieurs fichiers d’état dans un même répertoire, ce qui vous permet d’utiliser une configuration pour plusieurs environnements. Les espaces de travail Terraform Cloud contiennent tout ce dont vous avez besoin pour gérer un ensemble donné d’infrastructures et fonctionnent comme des répertoires de travail distincts.

 » Authentifiez-vous avec Terraform Cloud

Maintenant que vous avez défini votre backend, vous devez vous authentifier avec Terraform Cloud afin de procéder à l’initialisation. Afin de s’authentifier avec Terraform Cloud, exécutez la sous-commande terraform login et suivez les invites pour vous connecter.

Remarque : Si vous utilisez une version de Terraform antérieure à la version 0.12.21, la commande terraform login n’est pas disponible. Au lieu de cela, configurez un fichier de configuration CLI à authentifier.

$ terraform loginTerraform will request an API token for app.terraform.io using your browser.If login is successful, Terraform will store the token in plain text inthe following file for use by subsequent commands: /Users/username/.terraform.d/credentials.tfrc.jsonDo you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:

Copiez

Répondez à l’invite de confirmation avec un yes.

Pour des instructions plus détaillées sur la connexion, consultez le tutoriel de connexion.

 » Migrer le fichier d’état

Une fois que vous avez authentifié le backend remote, vous êtes prêt à migrer votre fichier d’état local vers Terraform Cloud. Pour commencer la migration, réinitialisez. Cela amène Terraform à reconnaître votre configuration backend modifiée.

$ terraform initInitializing the backend...Do you want to copy existing state to the new backend? Pre-existing state was found while migrating the previous "local" backend to the newly configured "remote" backend. No existing state was found in the newly configured "remote" backend. Do you want to copy this state to the new "remote" backend? Enter "yes" to copy and "no" to start with an empty state. Enter a value:

Copy

Lors de la réinitialisation, Terraform présente une invite indiquant qu’il copiera le fichier d’état dans le nouveau backend. Entrez yes et Terraform migrera l’état de votre machine locale vers Terraform Cloud.

 » Configurez l’espace de travail Terraform Cloud

Après avoir migré votre état vers Terraform Cloud, connectez-vous à l’interface utilisateur Web Terraform Cloud, recherchez le nom de votre espace de travail tel que défini dans votre configuration backend et cliquez dessus. Accédez à l’onglet « États » de l’espace de travail et voyez votre première action dans l’espace de travail.

 Une vue de l

N’oubliez pas que votre configuration contient une variable que vous devez ajouter à l’espace de travail. Cliquez sur l’onglet « Variables » dans l’espace de travail, puis sur « Ajouter une variable ».Entrez le nom de la variable, name_length, comme clé. Entrez ensuite une nouvelle valeur, 5, et enregistrez la variable.

 L'onglet Variables de l'espace de travail Cloud Terraform avec une variable ajoutée

Pour les configurations réelles, ajoutez également des informations d’identification de plate-forme cloud et toute autre variable de configuration à l’espace de travail.

 » Lancez une exécution dans le nouvel espace de travail

Après avoir vérifié que l’état a été migré vers l’espace de travail Terraform Cloud, supprimez le fichier d’état local.

$ rm terraform.tfstate

Copiez

Appliquez une nouvelle exécution.

$ terraform apply

Copy

Terraform diffusera les journaux depuis Terraform Cloud et fournira un lien vers l’exécution dans l’interface utilisateur Terraform Cloud. Vous définissez une nouvelle valeur pour la variable name_length, de sorte que la ressource sera remplacée par une correspondant aux nouveaux paramètres.

 Image d'une exécution en attente de confirmation, le journal indique que la ressource sera remplacée

 » Étapes suivantes

Détruisez les ressources que vous avez créées pour ce tutoriel en cliquant d’abord sur l’option « Paramètres » dans l’espace de travail Terraform Cloud, en sélectionnant « Destruction etdélémentation », en vous assurant que la case à cocher « Autoriser la destruction des plans » est cochée, puis en cliquant sur « Plan de destruction de file d’attente « .

Une fois les ressources détruites, revenez à la page « Destruction et suppression » et cliquez sur  » Supprimer de Terraform Cloud » pour supprimer l’espace de travail.

Dans ce tutoriel, vous avez migré un fichier d’état de votre machine locale vers un espace de travail Terraform Cloud. Pour savoir comment migrer les fichiers d’état de plusieurs espaces de travail locaux ou restreindre l’accès à l’espace de travail à une équipe particulière, consultez la documentation suivante.

  • Migration de l’État à partir de plusieurs Espaces de travail locaux
  • Gestion de l’accès à l’espace de travail

Si vous souhaitez migrer un grand nombre de fichiers d’état vers Terraform Cloud, envisagez d’utiliser l’API Terraform Cloud pour ce faire. Pour plus d’informations sur le téléchargement de versions d’état à l’aide de l’API, reportez-vous à la documentation de l’API de version d’État.

Related Post

Leave A Comment