Ce que vous allez obtenir
Section intitulée « Ce que vous allez obtenir »À la fin de ce guide, le vrai provider Terraform de Scaleway aura créé un
serveur et une adresse IP sur votre machine, un second plan répondra
qu'il n'y a rien à changer, et feint down aura tout détruit. Aucun compte
n'aura été ouvert, aucune clé d'accès lue, et rien ne sera facturé.
Feint est un émulateur : un programme local qui imite le plan de contrôle d'un fournisseur cloud, c'est-à-dire l'API qui crée, décrit et supprime les ressources, sans rien démarrer derrière. Terraform croit parler au vrai fournisseur, et vous pouvez vous exercer sans risque.
Le tout prend environ cinq minutes, dont la moitié à télécharger le provider.
Pourquoi commencer par là
Section intitulée « Pourquoi commencer par là »Un apply qui réussit est le premier signal, mais ce n'est pas celui qui
compte. Le vrai test d'une infrastructure décrite en Terraform est qu'elle
converge : après l'avoir créée, une seconde planification ne doit
proposer aucun changement. Ce guide vous fait voir les deux dans cet ordre,
parce que c'est le réflexe qui sert ensuite sur un vrai cloud.
Prérequis
Section intitulée « Prérequis »- Terraform 1.7 ou plus récent, ou OpenTofu.
- Git, pour récupérer l'exemple.
- Feint, installé en une commande ci-dessous.
Rien d'autre : pas de compte, pas de clé d'API, pas de moteur de conteneurs. L'émulateur est un binaire statique qui tient son état en mémoire.
Le lab, pas à pas
Section intitulée « Le lab, pas à pas »-
Installer Feint.
Fenêtre de terminal brew install stephrobert/feint/feintfeint versionLa sortie doit afficher
v0.13.0. Si vous préférez le binaire vérifié par signature, ou si vous n'utilisez pas Homebrew, la page d'installation donne les autres chemins. -
Récupérer l'exemple, qui vit dans le dépôt du projet.
Fenêtre de terminal git clone https://github.com/stephrobert/feintcd feint/examples/quickstart/scalewayDeux fichiers seulement s'y trouvent : un
main.tfassez court pour être lu en entier, et unfeint.yamlqui décrit l'environnement dont il a besoin. -
Vérifier l'hôte avant de lancer quoi que ce soit.
Fenêtre de terminal feint doctorLancé depuis le répertoire de la stack,
doctorfait plus que contrôler le port : il lit les fichiers Terraform présents et cherche les signatures connues d'un appel qui partirait vers le vrai cloud.ok no variable measured to reroute outscale clients is set in this shellok no known escape signature in the 1 Terraform file(s) here -
Tout monter en une commande.
Fenêtre de terminal feint upfeint uplit lefeint.yaml, vérifie ce que l'hôte peut fournir, démarre l'émulateur, exporte ce qu'attend le client officiel, lance Terraform dans le répertoire, puis attend les conditions que le fichier déclare avant de rendre la main.feint.yaml: scaleway, runtime off, terraform in .feint listening on 127.0.0.1:4599 (pid 3774695)- terraform init in .- Installing scaleway/scaleway v2.81.0...- terraform apply in .Apply complete! Resources: 2 added, 0 changed, 0 destroyed.- waiting: the emulator answers /instance/v1/zones/fr-par-1/serversok: http:/instance/v1/zones/fr-par-1/servers- waiting: the emulator holds a instance/serverok: resource:instance/server:1- waiting: the emulator holds a instance/ipok: resource:instance/ip:1La fin de la sortie récapitule où trouver quoi, ce qui évite d'avoir à retenir des commandes ou à les chercher dans un historique de shell :
up: http://127.0.0.1:4599clients: eval "$(feint env scaleway)"page: http://127.0.0.1:4599/_feint/uilogs: feint logs --addr 127.0.0.1:4599state: feint status --addr 127.0.0.1:4599proved: http:/instance/v1/zones/fr-par-1/servers, resource:instance/server:1, resource:instance/ip:1down: feint down -
Vérifier la convergence, qui est le vrai test.
Fenêtre de terminal terraform planNo changes. Your infrastructure matches the configuration.Cette ligne dit quelque chose de fort : l'API a relu les ressources comme elle les avait acceptées. Si une seule valeur revenait sous une autre forme, Terraform proposerait ici une modification fantôme, et vous auriez le même problème sur le vrai cloud.
-
Regarder ce que l'émulateur a réellement servi.
Fenêtre de terminal feint statusprovider routes driven by a clientscaleway 193 12exoscale 104 0outscale 100 0La colonne de droite compte les routes qu'un vrai client a traversées pendant votre session : douze ici, celles que Terraform a appelées pour créer puis relire vos deux ressources.
-
Tout détruire.
Fenêtre de terminal feint downDestroy complete! Resources: 2 destroyed.feint: discarding 1 resource(s) (started without --state); `feint snapshot save <name>` before stopping would have kept themLa seconde ligne n'est pas une erreur : l'émulateur signale qu'il jette une ressource restée en mémoire, et vous dit comment l'auriez gardée. Un émulateur qui disparaît en silence avec vos données serait plus gênant.
Casser le lab exprès
Section intitulée « Casser le lab exprès »Un guide de test doit montrer un échec, sinon il n'apprend rien du
diagnostic. Le lab vient d'être détruit par feint down : l'émulateur est
arrêté, et c'est feint up qui le relance. Ouvrez main.tf, remplacez le
type du serveur (DEV1-S) par une valeur qui n'existe pas, DEV1-XXL par
exemple, puis relancez toute la pile :
feint upLe provider refuse, avec le message exact could not find a server type associated with DEV1-XXL in zone fr-par-1, et la ligne finale
feint: terraform apply: exit status 1. C'est l'émulateur qui a refusé : le
catalogue est une liste fermée, et un type absent est rejeté comme le
ferait Scaleway. Notez ce qui s'est passé avant le refus : Terraform crée les
ressources dans l'ordre de leurs dépendances, donc l'adresse IP a déjà été
créée quand le serveur échoue. C'est un apply partiel, et il laisse un
reste à nettoyer, exactement comme sur un vrai cloud. terraform state list
ne renvoie d'ailleurs que scaleway_instance_ip.web, et l'émulateur reste en
marche après l'échec.
Remettez la valeur d'origine avec git checkout -- main.tf, puis détruisez ce
qui reste :
feint downDestroy complete! Resources: 1 destroyed.L'ordre compte : cet exercice se joue après l'étape 7. Rejoué
alors que le lab tourne encore, le changement de type porte sur un serveur déjà
créé, et l'erreur est un autre message (cannot change server type), sans IP
créée avant l'échec.
En revanche, un identifiant d'image inexistant passerait, lui, et c'est une limite délibérée que la page sur les limites explique.
C'est déjà une leçon utile : ce lab prouve que votre configuration est bien formée, pas que toutes les valeurs qu'elle nomme existent quelque part.
Ce que ce lab prouve
Section intitulée « Ce que ce lab prouve »Un lab n'a de valeur que par ce qu'il établit réellement. Quatre constats sont démontrés par les sept étapes ci-dessus :
- Le vrai provider Terraform sait parler à l'émulateur, dans sa version épinglée
2.81.0. - Votre configuration crée puis relit ses ressources de façon cohérente.
- L'état converge : le second plan est vide.
- La destruction fonctionne, et le nettoyage est complet.
Ce qu'il ne prouve pas
Section intitulée « Ce qu'il ne prouve pas »Les limites comptent autant que les preuves, parce qu'elles disent où s'arrête ce que l'émulateur peut garantir. Trois choses ne sont pas établies :
- Aucune machine n'a démarré. Ce lab tourne en mode plan de contrôle : l'API décrit un serveur, rien ne s'exécute derrière. Le guide des machines réelles montre l'autre moitié.
- Les valeurs ne sont pas celles du vrai cloud : ni les prix, ni les quotas, ni la capacité disponible.
- Rien n'a été authentifié. Les identifiants exportés sont bien formés et fictifs, et l'émulateur ne vérifie aucune signature.
À retenir
Section intitulée « À retenir »- Un
applyréussi ne suffit pas : le test qui compte est un secondterraform planqui répond « No changes ». - Feint émule le plan de contrôle du fournisseur sur votre machine : le vrai provider Terraform tourne, sans compte ni clé d'accès.
- Le cycle
feint up,terraform plan,feint downcrée, vérifie la convergence, puis détruit sans reste. - Le lab prouve que la configuration est bien formée et converge, pas que les valeurs nommées existent chez le vrai fournisseur ni qu'une machine a démarré.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »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
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
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Reconstruire puis détruire un environnement depuis le code
Continuer le cours : Brancher les CLI officiels Scaleway, Outscale et Exoscale
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications