arrow_back

Infrastructure as Code avec Terraform

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Infrastructure as Code avec Terraform

Lab 1 heure universal_currency_alt 1 crédit show_chart Débutant
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Présentation

Dans cet atelier, vous allez utiliser Terraform pour créer, mettre à jour et détruire des ressources Google Cloud. Vous commencerez par définir Google Cloud comme fournisseur.

Vous créerez une instance de VM sans mentionner le réseau pour voir comment Terraform analyse le code de configuration. Ensuite, vous modifierez le code pour ajouter un réseau et créer une instance de VM sur Google Cloud.

Vous apprendrez à mettre à jour l'instance de VM. Vous modifierez la configuration existante pour ajouter des tags, puis changerez le type de machine. Enfin, vous exécuterez des commandes Terraform pour détruire les ressources créées.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Vérifier l'installation de Terraform
  • Définir Google Cloud comme fournisseur
  • Créer, modifier et détruire des ressources Google Cloud à l'aide de Terraform

Tâche 1 : Se connecter à la console Cloud

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Tâche 2 : Vérifier l'installation de Terraform

  1. Dans le menu Google Cloud, cliquez sur Activer Cloud Shell (Activer Cloud Shell). Si une boîte de dialogue s'affiche, cliquez sur Continuer.

  2. Cliquez sur "Continuer" si vous y êtes invité.

  3. Exécutez la commande suivante pour vérifier que Terraform est bien installé :

Remarque : Si vous recevez un avertissement signalant que la version de Terraform est obsolète, n'en tenez pas compte. Les instructions données dans cet atelier sont compatibles avec Terraform v1.0.5 et versions ultérieures. terraform --version Remarque : Pour télécharger la dernière version de Terraform, rendez-vous sur le site Web de Terraform. Terraform est distribué sous forme de package binaire pour toutes les plates-formes et architectures compatibles, tandis que Cloud Shell utilise la version 64 bits de Linux.

Vous devriez obtenir le résultat suivant (ne copiez pas cet exemple) :

Terraform v1.2.2

Terraform est préinstallé dans Cloud Shell. Vous pouvez donc créer directement une infrastructure.

Tâche 3 : Ajouter un fournisseur Google Cloud

  1. Créez un répertoire nommé compute :
mkdir compute
  1. Créez le fichier main.tf :
touch main.tf
  1. Cliquez sur Ouvrir l'éditeur dans la barre d'outils de Cloud Shell. Cliquez sur Ouvrir dans une nouvelle fenêtre pour laisser l'éditeur ouvert dans un onglet distinct.

  2. Copiez le code ci-dessous dans le fichier main.tf.

terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { project = "{{{project_0.project_id | Project ID}}}" region = "{{{project_0.default_region | Region}}}" zone = "{{{project_0.default_zone | Zone}}}" }
  1. Cliquez sur Fichier > Enregistrer.
  2. Accédez à la fenêtre Cloud Shell et exécutez la commande terraform init.
terraform init

Le résultat devrait ressembler à l'exemple suivant (ne pas copier) :

Initializing the backend... Initializing provider plugins... - Finding hashicorp/google versions matching "4.15.0"... - Installing hashicorp/google v4.15.0... - Installed hashicorp/google v4.15.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized!

Tâche 4 : Créer l'infrastructure

Essayons de créer une instance de calcul sans spécifier le paramètre "network" et voyons comment Terraform traite cette configuration.

  1. Accédez à la fenêtre de l'éditeur. Dans le fichier main.tf, saisissez le bloc de code suivant :
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } }
  1. Enregistrez le fichier "main.tf" en cliquant sur Fichier > Enregistrer.

  2. À présent, exécutez la commande suivante pour vérifier si l'instance Compute Engine va être créée :

terraform plan
  1. La configuration échoue avec l'erreur ci-dessous. En effet, vous ne pouvez pas configurer d'instance Compute Engine sans réseau.
│ Error: Insufficient network_interface blocks │ │ on main.tf line 15, in resource "google_compute_instance" "terraform": │ 15: resource "google_compute_instance" "terraform" { │ │ At least 1 "network_interface" blocks are required.
  1. À présent, ajoutez le réseau en incluant le segment de code ci-dessous dans le bloc google_compute_instance.
network_interface { network = "default" access_config { } }

Le code final figurant dans le fichier main.tf doit se présenter comme suit :

terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { project = "{{{project_0.project_id | Project ID}}}" region = "{{{project_0.default_region | Region}}}" zone = "{{{project_0.default_zone | Zone}}}" } resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } }
  1. Enregistrez le fichier "main.tf" en cliquant sur Fichier > Enregistrer.
  2. À présent, exécutez la commande terraform plan pour vérifier si l'instance Compute Engine va être créée.
terraform plan

Cliquez sur Autoriser quand vous y êtes invité.

Vous devriez obtenir le résultat suivant (ne copiez pas cet exemple) :

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_instance.terraform will be created + resource "google_compute_instance" "terraform" { + can_ip_forward = false + cpu_platform = (known after apply) + current_status = (known after apply) + deletion_protection = false ... Plan: 1 to add, 0 to change, 0 to destroy.
  1. Pour appliquer les modifications souhaitées, exécutez la commande suivante :
terraform apply
  1. Pour confirmer les actions planifiées, saisissez yes.

Vous devriez obtenir le résultat suivant (ne copiez pas cet exemple) :

... Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Remarque : Si vous recevez un message d'erreur, revenez aux étapes précédentes pour vérifier que vous avez saisi le code approprié dans le fichier "main.tf".

Cliquez sur Vérifier ma progression pour confirmer que l'instance Compute Engine a bien été créée.

Créer l'infrastructure

Vérifier le résultat dans la console Cloud

Dans la console Cloud, vérifiez que les ressources ont bien été créées.

  1. Dans la console Cloud, accédez au menu de navigation (Menu de navigation), puis cliquez sur Compute Engine > Instances de VM.

  2. Affichez l'instance terraform que vous avez créée. terraform_instance

Tâche 5 : Modifier l'infrastructure

Dans cette tâche, vous allez apporter deux types de modifications à l'infrastructure :

  • Ajouter des tags réseau
  • Changer le type de machine

Ajouter des tags à la ressource de calcul

Terraform permet non seulement de créer des ressources, mais également de les modifier.

  1. Ajoutez un argument tags à l'instance que vous venez de créer de sorte que le code se présente comme suit :
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" tags = ["web", "dev"] # ... }
  1. Exécutez terraform plan.
terraform plan
  1. Exécutez terraform apply pour mettre à jour l'instance.
terraform apply

Vous devriez obtenir le résultat suivant (ne copiez pas cet exemple) :

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # google_compute_instance.terraform will be updated in-place ~ resource "google_compute_instance" "terraform" { id = "projects/qwiklabs-gcp-00-da04aeabe9ab/zones/us-central1-c/instances/terraform" name = "terraform" ~ tags = [ + "dev", + "web", ] # (17 unchanged attributes hidden) # (4 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy.

Le préfixe ~ signifie que Terraform va mettre à jour la ressource sur place.

  1. Répondez yes lorsque vous y êtes invité. Terraform ajoute alors les tags à votre instance.

Cliquez sur Vérifier ma progression pour confirmer que les tags ont bien été ajoutés. Ajouter des tags à la ressource de calcul

Changer le type de machine sans arrêter la VM

Vous ne pouvez pas changer le type de machine d'une VM en cours d'exécution. Voyons comment Terraform traite cette opération.

  1. Accédez au fichier main.tf et remplacez la valeur e2-micro de l'argument "machine_type" de l'instance Terraform par e2-medium de sorte que le code se présente comme suit :
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-medium" tags = ["web", "dev"] # ... }
  1. Exécutez terraform plan.
terraform plan
  1. Réexécutez terraform apply pour mettre à jour l'instance.
terraform apply

La commande "terraform apply" échoue et renvoie le message d'avertissement ci-dessous. (Ne copiez pas cet exemple.)

╷ │ Error: Changing the machine_type, min_cpu_platform, service_account, enable_display, shielded_instance_config, scheduling.node_affinities or network_interface.[#d].(network/subnetwork/subnetwork_project) or advanced_machine_features on a started instance requires stopping it. To acknowledge this, please set allow_stopping_for_update = true in your config. You can also stop it by setting desired_status = "TERMINATED", but the instance will not be restarted after the update. │ │ with google_compute_instance.terraform, │ on main.tf line 31, in resource "google_compute_instance" "terraform": │ 31: resource "google_compute_instance" "terraform" {
  1. Il est impossible de changer le type de machine d'une VM en cours d'exécution. Pour que la VM s'arrête avant que vous mettiez à jour le paramètre machine_type, définissez l'argument allow_stopping_for_update sur true de sorte que le code se présente comme suit :
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-medium" tags = ["web", "dev"] boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } allow_stopping_for_update = true }
  1. Exécutez terraform plan.
terraform plan
  1. Réexécutez terraform apply pour mettre à jour l'instance.
terraform apply
  1. Répondez yes lorsque vous y êtes invité.

  2. Pour vérifier que le type de machine a été modifié et que les tags ont été ajoutés, accédez à Instances de VM dans la console Cloud et cliquez sur l'instance terraform créée. machine_type network_tags

Cliquez sur Vérifier ma progression pour confirmer que le type de machine Compute Engine fourni par Terraform est bien "e2-medium". Changer le type de machine de l'infrastructure

Tâche 6 : Détruire l'infrastructure

Vous savez maintenant comment créer et modifier une infrastructure. Avant de créer plusieurs ressources et d'afficher les dépendances associées, vous allez découvrir comment détruire complètement votre infrastructure gérée par Terraform.

  1. Exécutez la commande ci-dessous. Répondez yes pour exécuter ce plan et détruire l'infrastructure :
terraform destroy

Le préfixe - indique que l'instance et le réseau vont être détruits.

  1. Vérifiez que l'instance Terraform n'existe plus en accédant à Instances de VM dans la console Cloud.

Cliquez sur Vérifier ma progression pour confirmer que l'infrastructure a bien été détruite. Détruire l'infrastructure

Félicitations !

Dans cet atelier, vous avez appris à effectuer les tâches suivantes :

  • Vérifier l'installation de Terraform
  • Définir Google Cloud comme fournisseur
  • Créer, modifier et détruire des ressources Google Cloud à l'aide de Terraform

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.