Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Apprendre Terraform sans compte cloud ni carte bancaire

Par mis à jour le

Améliorer cette page

À la fin de ce guide, vous aurez écrit une configuration Terraform, l'aurez appliquée, modifiée, cassée puis réparée, autant de fois que vous le souhaitez, sur votre machine. Vous aurez vu ce qu'est une variable, un output, une dépendance entre ressources, un état et une convergence, et vous aurez lu une vraie erreur de provider.

Le tout sans compte cloud, sans clé d'API, sans carte bancaire et sans attendre qu'une machine se provisionne.

Apprendre Terraform coûte cher, et pas seulement en argent. Ouvrir un compte, générer des clés, comprendre la facturation et se souvenir de tout détruire avant de fermer son ordinateur : ces obstacles arrivent avant la première ligne de HCL, et ils découragent au moment où l'on devrait être en train d'expérimenter.

Or apprendre Terraform, c'est surtout répéter. Écrire, appliquer, se tromper, recommencer. Une boucle qui coûte quelques centimes et deux minutes d'attente est une boucle qu'on n'ose pas parcourir vingt fois dans la soirée. Ici, elle est gratuite et instantanée, et c'est ce qui change la façon d'apprendre.

Rien d'autre. Si vous n'avez pas encore fait tourner l'émulateur une première fois, commencez par le guide des premiers pas : celui-ci suppose que feint start fonctionne déjà chez vous.

  1. Démarrer l'émulateur et brancher le client, une fois pour toute la session de travail.

    Fenêtre de terminal
    feint start
    eval "$(feint env scaleway)"
  2. Écrire une configuration avec une variable et un output. Ces deux notions arrivent tôt dans tout apprentissage, et elles se voient mieux sur un exemple qu'on peut relancer que dans une définition.

    variable "nom" {
    type = string
    default = "web"
    description = "Nom du serveur"
    }
    resource "scaleway_instance_ip" "web" {}
    resource "scaleway_instance_server" "web" {
    name = var.nom
    type = "DEV1-S"
    image = "ubuntu_jammy"
    ip_id = scaleway_instance_ip.web.id
    }
    output "adresse" {
    value = scaleway_instance_ip.web.address
    }

    La ligne qui compte pédagogiquement est ip_id = scaleway_instance_ip.web.id : elle ne se contente pas de passer une valeur, elle crée une dépendance. Terraform en déduit seul qu'il faut créer l'adresse avant le serveur.

  3. Appliquer, et lire l'output.

    Fenêtre de terminal
    terraform apply
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    adresse = "203.0.113.2"
  4. Regarder l'état, qui est le concept que les débutants découvrent le plus tard alors qu'il explique presque tout.

    Fenêtre de terminal
    terraform state list
    scaleway_instance_ip.web
    scaleway_instance_server.web

    L'état est la mémoire de Terraform : ce qu'il croit avoir créé, et sous quel nom. C'est en le comparant au monde réel qu'il décide quoi faire.

  5. Modifier une variable, et lire le plan avant d'appliquer.

    Fenêtre de terminal
    terraform plan -var 'nom=web-02'
    ~ update in-place
    ~ resource "scaleway_instance_server" "web" {
    ~ name = "web" -> "web-02"
    Plan: 0 to add, 1 to change, 0 to destroy.

    Trois informations en quatre lignes : le changement est une modification sur place, il ne concerne qu'une ressource, et rien ne sera détruit. Apprendre à lire ce résumé avant chaque apply est le réflexe le plus utile que vous puissiez prendre, et il vaut aussi bien sur un vrai compte.

Un apprentissage sans erreur ne prépare à rien. Changez le type du serveur pour une valeur qui n'existe pas :

type = "DEV1-XXL"
Fenêtre de terminal
terraform apply
Error: cannot change server type: scaleway-sdk-go: could not find server type "DEV1-XXL"

Prenez le temps de lire cette erreur en entier, parce qu'elle vous apprend trois choses. Elle vient du SDK Scaleway, pas de Terraform : c'est le fournisseur qui refuse. Elle nomme la valeur fautive, ce qui n'est pas toujours le cas. Et elle est arrivée à l'apply, pas au plan : Terraform ne pouvait pas savoir que ce type n'existe pas, seule l'API le sait.

Remettez DEV1-S, relancez, et l'infrastructure repart. Vous venez de faire gratuitement ce qui, sur un vrai compte, aurait pu créer une machine facturée à l'heure.

Ce que ce terrain d'entraînement vous apprend vraiment

Section intitulée « Ce que ce terrain d'entraînement vous apprend vraiment »

Les compétences ci-dessous se transposent sans modification sur un vrai compte cloud, parce qu'elles appartiennent à Terraform et non à l'émulateur.

  • Le langage HCL : blocs, variables, outputs, expressions.
  • Le graphe de dépendances, et comment une référence le construit.
  • Le cycle de vie : création, modification sur place, remplacement, destruction.
  • L'état et sa relation avec le monde réel.
  • L'idempotence : appliquer deux fois ne doit rien changer la seconde fois.
  • La lecture d'un plan, qui est la compétence la plus rentable du lot.
  • Les prix et la facturation, qui ne sont simulés nulle part ici.
  • Les quotas et la capacité réelle d'une zone, qui restent des valeurs de décor.
  • Les délais : ici une machine passe par défaut à l'état démarré immédiatement, là où un vrai cloud prend une minute et fait parfois patienter votre configuration.
  • Les permissions IAM, l'émulateur acceptant toute identité sans jamais la vérifier.

Aucune de ces limites n'empêche d'apprendre le langage et le modèle. Elles disent seulement à quel moment passer sur un vrai compte : quand vous voudrez apprendre l'exploitation, et non plus l'outil. La frontière complète, établie ligne par ligne avec ce qui prouve chaque verdict, est dans Ce que Feint prouve.

Ce guide vous a donné un terrain d'entraînement, pas un programme. Pour apprendre Terraform dans l'ordre, du langage jusqu'aux modules, à l'état distant et aux environnements, le site propose un parcours complet que vous pouvez désormais suivre sans ouvrir de compte cloud : il suffit de pointer ses exemples sur l'émulateur comme vous venez de le faire.

Ce parcours est la formation Terraform du site, qui mène jusqu'aux certifications. C'est la combinaison qui rend l'apprentissage vraiment gratuit : la formation donne la progression, Feint fournit le cloud sur lequel la dérouler.

Dans cette formation Feint, la suite reste sur l'émulateur : la leçon Tester une configuration Terraform passe de deux ressources à des configurations réalistes sur les trois fournisseurs, et une déclaration feint.yaml permet ensuite à d'autres de rejouer votre lab en une commande.

  • Un émulateur rend la boucle d'apprentissage gratuite et instantanée : écrire, appliquer, casser, réparer, autant de fois qu'il le faut.
  • Une référence comme ip_id = scaleway_instance_ip.web.id crée une dépendance, et Terraform en déduit seul l'ordre de création.
  • L'état est la mémoire de Terraform : ce qu'il croit avoir créé, qu'il compare au monde réel pour décider quoi faire.
  • Le plan se lit avant chaque apply : modification sur place, nombre de ressources touchées, destructions éventuelles.
  • Une valeur inconnue de l'API échoue à l'apply, pas au plan, parce que seule l'API connaît son catalogue.
  • Les prix, les quotas, les délais réels et l'IAM ne s'apprennent pas ici : ils demandent un vrai compte.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn