Vous apprenez Terraform, vous développez un module, ou vous voulez
lancer vos tests d'infrastructure en intégration continue sans y poser la
moindre clé d'accès. feint fait tourner les API de Scaleway, Outscale et
Exoscale sur votre machine. Vos vrais clients et vos vrais providers Terraform
parlent à 127.0.0.1 au lieu de créer des ressources facturées.
Concrètement, la démonstration tient en deux commandes, dans un dépôt cloné, et sans rien configurer :
feint up # vérifie l'hôte, démarre l'émulateur, applique le Terraformfeint down # détruit ce qui a été créé, puis arrête l'émulateurApply complete! Resources: 2 added, 0 changed, 0 destroyed.Le provider qui a produit cette ligne est le vrai, celui du registre Terraform, dans sa version épinglée. Aucun compte n'a été ouvert, aucun identifiant réel n'a été lu, et rien ne continue de tourner ailleurs que sur votre poste.
Par où commencer, selon ce que vous voulez faire
Section intitulée « Par où commencer, selon ce que vous voulez faire »Ce que feint change concrètement
Section intitulée « Ce que feint change concrètement »Une équipe qui écrit du Terraform Scaleway ou du code SDK Outscale teste aujourd'hui contre un compte payant, ou ne teste pas. Le premier choix transforme chaque exécution d'intégration continue en ligne de facture, et chaque développeur en propriétaire de ressources oubliées quand un job échoue au milieu. Le second laisse les erreurs remonter en production.
Un émulateur répond à ce besoin précis : il rejoue le protocole du fournisseur pour que le client officiel, celui que vous utiliserez vraiment, fonctionne sans quitter votre machine. Le site couvre déjà l'équivalent côté AWS avec Floci ; feint fait la même chose pour les trois clouds européens, sur un seul port.
Pour un apprenant, le changement est ailleurs et plus radical : la boucle « j'écris, j'applique, je casse, je corrige » devient gratuite et immédiate, là où elle demandait une carte bancaire, des identifiants et quelques minutes de provisionnement à chaque essai.
Ce que vous pouvez valider, et ce que vous ne pouvez pas
Section intitulée « Ce que vous pouvez valider, et ce que vous ne pouvez pas »C'est la question à se poser avant d'installer quoi que ce soit, et elle a une réponse écrite plutôt qu'une promesse. En résumé : le contrat d'API, le cycle de vie Terraform et le comportement de votre client sont testables ; les prix, les quotas, la capacité réelle et les permissions IAM ne le sont pas. Certaines réponses dépendent d'un runtime de machines installé sur l'hôte.
Les trois façons de le faire tourner
Section intitulée « Les trois façons de le faire tourner »Le chemin d'un poste de travail, et le seul qui donne accès aux machines réelles, parce que celles-ci reposent sur un runtime installé sur l'hôte. Trois canaux mènent au même binaire :
brew install stephrobert/feint/feint # Homebrewmise use -g github:stephrobert/feint@0.13.0 # mise, avec vérification des attestationsLa page d'installation détaille les trois canaux, dont la release vérifiée par signature Sigstore, et dit ce que chacun contrôle avant de vous laisser exécuter le binaire.
Zéro installation, plan de contrôle seul. C'est la forme qui sert en intégration continue.
docker run --rm -p 127.0.0.1:4599:4599 ghcr.io/stephrobert/feint:v0.13.0Elle installe le binaire publié, vérifie sa somme de contrôle avant de l'exécuter, et attend que l'émulateur réponde.
- uses: stephrobert/setup-feint@b7eba1d4fcaccf65cf9124bf97a0d995996709b9 # v1.0.0 with: version: 0.13.0 provider: scalewayL'état du projet, en clair
Section intitulée « L'état du projet, en clair »En 0.13.0, l'émulateur monte 395 opérations, dont 375 sont pilotées par un vrai client dans l'exécution de référence ; les 20 restantes déclarent, à leur route, pourquoi aucun client officiel ne les atteint. Les trois fournisseurs n'en sont pas au même point.
| Fournisseur | Maturité | Opérations | Prouvé par, en intégration continue |
|---|---|---|---|
| Scaleway | utilisable | 191 | Terraform, OpenTofu, scw |
| Exoscale | démarrage | 104 | Terraform, OpenTofu, exo |
| Outscale | démarrage | 100 | Terraform, OpenTofu, octl |
Utilisable signifie qu'une configuration réaliste s'applique, se replanifie à vide et se détruit. Démarrage veut dire que le protocole est juste et qu'un vrai client mène une charge de travail réelle, mais que la surface reste plus mince. Depuis la 0.13.0, Terraform pilote les trois fournisseurs : Exoscale a rejoint les deux autres avec la version 0.71.0 de son provider, les versions antérieures restant refusées pour une raison qui vous protège, expliquée dans le guide Terraform.