Aller au contenu
English
Cloud medium

Infrastructure as Code sur Scaleway : qui fait quoi

30 min de lecture

Deux outils officiels et une extension communautaire couvrent l'infrastructure as code sur Scaleway, et chacun échoue si on lui demande le travail d'un autre. Packer construit une image, Terraform provisionne l'infrastructure, Ansible exploite ce qui existe déjà. Cette leçon ouvre le volet : elle attribue chaque tâche au bon outil, donne les versions de référence avec leur date de publication, apprend à vérifier la signature de ce qu'on installe, et chiffre ce qu'un build coûte avant qu'on le lance. Elle ne construit rien : c'est la carte qu'on lit avant de partir, celle qui évite les décisions qu'on ne peut plus reprendre une fois la première ressource créée.

  • Attribuer chaque tâche au bon outil, et reconnaître les mélanges qui coûtent cher.
  • Connaître les versions de référence, avec leur date de publication.
  • Vérifier la signature de ce que vous installez, sur les trois outils.
  • Estimer le coût d'un build d'image avant de le déclencher.

Ce volet enseigne ce que Scaleway fait de Packer, Terraform et Ansible, pas ces trois outils. Chaque leçon suppose acquis ce qui suit, et renvoie vers la formation correspondante plutôt que de la réexpliquer :

  • Terraform : écrire du HCL, comprendre l'état et les providers, enchaîner init, plan, apply et destroy (formation Terraform).
  • Packer : un modèle HCL2, packer init et packer build (formation Packer).
  • Ansible : un playbook, un inventaire, l'idempotence (formation Ansible).
  • Un compte Scaleway avec un projet dédié et la CLI scw sur un profil isolé, comme au volet Prendre en main.

Chaque outil produit l'entrée du suivant. C'est ce qui rend l'ordre impératif plutôt que conventionnel.

Le triptyque de l'infrastructure as code sur Scaleway : Packer construit une image durcie qui sert d'image de depart a Terraform, lequel provisionne les instances, le reseau et le load balancer en tenant son etat sur Object Storage, puis Ansible exploite la flotte decouverte par inventaire dynamique ; seul Terraform detruit

PackerTerraformAnsible
Produitune imagedes ressourcesun changement d'état
Retientrien, l'image est le produitun état, comparé au réelrien, il relit à chaque fois
Question posée« cette image contient-elle ce qu'il faut ? »« le réel correspond-il au code ? »« cette ressource est-elle dans l'état voulu ? »
Détruitnonoui, destroynon, jamais

Les trois mélanges qui coûtent le plus cher se reconnaissent à leur symptôme, et chacun fonctionne le premier jour :

  • Configurer le système depuis Terraform, par remote-exec. Cela marche, et vous perdez l'idempotence : rejouer le apply ne rejoue pas la configuration, qui n'est pas dans l'état.
  • Provisionner depuis Ansible. Cela marche aussi, et vous perdez le suivi d'état : rien ne détecte une ressource supprimée à la main, rien ne sait la détruire proprement.
  • Installer les paquets au démarrage plutôt que dans l'image. Cela marche, et chaque machine met cinq minutes à devenir utile au lieu d'une, ce qui rend la mise à l'échelle automatique décorative.

Notez ces trois lignes, elles datent ce que vous lisez. Un guide d'infrastructure as code sans version est un guide qu'on ne peut pas reproduire.

OutilMaintenu parVersionPubliée leCe qu'elle apporte de notable
Provider Terraform scaleway/scalewayScaleway, organisation officielle2.83.014 septembre 2026destruction d'une interface privée attachée rétablie, cassée en 2.81.0 et 2.82.0 ; Instance Templates et groupes d'autoscaling depuis la 2.82.0
Plugin Packer scaleway/scalewayScaleway, organisation officielle1.5.017 juin 2026Windows Server, étiquettes du serveur temporaire, snapshot_name déplacé hors de la racine du bloc source
Collection Ansible stephrobert.scalewaycommunauté, dépôt stephrobert0.5.09 septembre 2026attributs publiés, politique de rejeu, 50 modules
Collection Ansible scaleway.scalewayorganisation Scaleway, déclarée « Community »2.7.219 février 202660 modules de provisionnement, inventaire dynamique, lookup Secret Manager
Collection Ansible community.generalcommunauté Ansible11.4.7publiée en continu28 modules Scaleway et un inventaire, livrés avec le paquet ansible

Il existe trois collections Ansible pour Scaleway : laquelle pour quoi ?

Section intitulée « Il existe trois collections Ansible pour Scaleway : laquelle pour quoi ? »

Vous en avez déjà une sans le savoir, Scaleway en héberge une autre, et ce parcours en utilise une troisième. Le dire franchement vaut mieux que de laisser croire qu'il n'y a pas de choix : il y en a un, et il se justifie par le périmètre, pas par l'absence d'alternative.

Relevé le 11 septembre 2026, sur l'installation locale et sur les dépôts :

Critèrecommunity.generalscaleway.scalewaystephrobert.scaleway
Où elle vitcollection communautaire d'Ansibleorganisation Scalewaydépôt stephrobert
Installationdéjà présente avec le paquet ansibleà installerà installer
Version relevée11.4.72.7.2, 19 février 20260.5.0, 9 septembre 2026
Modules Scaleway28, dont 9 en _info6050 : 29 _info, 17 gestion, 4 _action
Inventaire dynamiqueoui, scalewayoui, scalewayoui, compute
Lookup Secret Managernonouinon
Exploitation au jour 2partielle : state: running, restarted, stopped sur scaleway_computenon annoncéefamille _action dédiée
check_mode et diff_mode déclarés par modulepas systématiquementnon documenté ainsi50 sur 50 et 17 sur 50

Commencez par regarder ce que vous avez déjà. Si vous avez installé le paquet ansible, community.general est là, avec ses 28 modules Scaleway et son inventaire. Pour créer une Instance, poser une adresse ou redémarrer une machine, elle suffit, et elle n'ajoute aucune dépendance. Sa contrepartie est qu'elle suit le rythme d'une collection généraliste de plus de cinq cents modules, où Scaleway n'est qu'un fournisseur parmi beaucoup d'autres. Sept de ses anciens modules _facts y sont d'ailleurs passés en tombstone, c'est-à-dire supprimés, au profit des _info.

scaleway.scaleway est la plus fournie pour le provisionnement, avec ses 60 modules et son lookup vers Secret Manager, qui n'a d'équivalent nulle part ailleurs. C'est aussi celle dont le périmètre recoupe le plus Terraform, à qui ce parcours confie la création des ressources.

Le départage ne tient donc pas à la qualité mais à la doctrine. Superposer un second outil de provisionnement créerait deux sources de vérité sur les mêmes objets, ce que la leçon Ansible passe son temps à déconseiller. Le besoin qui restait découvert est le jour 2 avec des garanties explicites : savoir, avant de lancer un playbook, quels modules répondent au mode répétition et lesquels montrent un différentiel.

Comment vérifier la signature d'un provider ou d'un plugin ?

Section intitulée « Comment vérifier la signature d'un provider ou d'un plugin ? »

Les trois outils publient des sommes de contrôle signées, et presque personne ne les vérifie. Le site enseigne la sécurité de la chaîne d'approvisionnement : autant l'appliquer sur les outils qui déploient votre infrastructure.

  1. Terraform vérifie tout seul, à condition de le laisser faire

    Le provider est distribué avec un fichier SHA256SUMS et sa signature PGP. Terraform contrôle les deux pendant terraform init, et enregistre le résultat dans le fichier de verrouillage.

    Fenêtre de terminal
    terraform init
    grep -A4 'scaleway' .terraform.lock.hcl

    Le fichier doit contenir les empreintes h1: du provider. Versionnez-le : c'est lui qui garantit que votre équipe et votre chaîne d'intégration installent exactement le même binaire.

  2. Packer demande une vérification explicite

    Le plugin publie lui aussi packer-plugin-scaleway_v1.5.0_SHA256SUMS et sa signature .sig. La vérification se fait avant l'installation, comme pour n'importe quel binaire téléchargé.

    Fenêtre de terminal
    packer plugins installed

    La sortie liste les plugins et leur version : c'est ce qu'il faut comparer à ce que votre modèle épingle.

  3. La collection Ansible porte une signature sans clé

    L'archive est signée par cosign et accompagnée d'une attestation de provenance SLSA, toutes deux liées à l'identité du workflow qui l'a produite plutôt qu'à un secret à conserver.

    Fenêtre de terminal
    ansible-galaxy collection list stephrobert.scaleway

Ces trois commandes disent ce que vous avez réellement, ce qui n'est pas la même chose que ce que votre code déclare. C'est le premier réflexe à prendre quand un comportement diffère entre deux postes.

Pourquoi épingler la version n'est pas facultatif ?

Section intitulée « Pourquoi épingler la version n'est pas facultatif ? »

Un outil d'infrastructure as code non épinglé rend votre code non reproductible, ce qui vide de son sens la raison même de l'écrire.

Ce n'est pas une précaution théorique. Mesuré le 2026-09-09 sur un compte Scaleway réel, avec une stack minimale d'un VPC, un Private Network, une instance DEV1-S et une interface privée : le provider 2.80.0 détruit l'ensemble en 7 secondes, code de sortie 0, tandis que 2.81.0 et 2.82.0 échouent tous deux sur une erreur 412 et laissent les quatre ressources en place. Une contrainte flottante aurait donc suffi à casser la destruction d'une infrastructure existante, sans le moindre changement de votre côté, le jour de la publication amont. La 2.83.0, publiée le 14 septembre 2026, rétablit la destruction : mesuré le même jour sur la même stack, code 0 en 13 secondes.

# Terraform : la contrainte va dans required_providers
terraform {
required_providers {
scaleway = {
source = "scaleway/scaleway"
version = "2.83.0"
}
}
}
# Packer : la contrainte va dans required_plugins
packer {
required_plugins {
scaleway = {
source = "github.com/scaleway/scaleway"
version = "1.5.0"
}
}
}

La contrepartie est connue et assumée : une version figée ne reçoit pas les correctifs de sécurité. C'est pourquoi l'épinglage s'accompagne d'un rythme de mise à jour, pas d'un oubli. Un provider qui n'a pas bougé depuis un an n'est pas stable, il est abandonné par son utilisateur.

Terraform et Ansible ne coûtent rien par eux-mêmes ; Packer coûte à chaque exécution. C'est la différence qui surprend, et elle mérite d'être chiffrée avant le premier build.

Un build Packer démarre une vraie Instance, y exécute vos commandes, en prend un snapshot, produit une image, puis détruit la machine. Trois objets facturés, dont deux survivent au build.

Ce que le build consommeTarifSur un build de 15 minutes
une Instance DEV1-Senviron 0,009 €/hmoins d'un centime
une Flexible IP, exigée pour joindre la machine0,005 €/hnégligeable
le snapshot produitau gigaoctet stockétant qu'il existe
l'image produiteau gigaoctet stockétant qu'elle existe

Le coût du build est dérisoire, celui de l'oubli ne l'est pas. Un snapshot et une image de dix gigaoctets laissés en place se facturent tous les mois, sans que rien ne les signale. C'est le poste que la leçon Packer apprend à contrôler après chaque build, réussi ou non.

Trois commandes de lecture, aucune ne crée rien, et elles répondent à la question qui commence tout dépannage : de quoi mon poste dispose-t-il réellement ?

Fenêtre de terminal
terraform providers
packer plugins installed
ansible-galaxy collection list stephrobert.scaleway

La première liste les providers exigés par votre configuration et ceux réellement installés. La deuxième liste les plugins Packer présents, avec leur version. La troisième dit quelle version de la collection Ansible répondra, ce qui n'est pas toujours celle que vous croyez avoir installée.

Connaître les limites évite de chercher pendant une heure une capacité qui n'existe pas. Les trois en ont, et elles sont documentées par leurs auteurs.

OutilCe qu'il ne fait pas aujourd'hui
Packerconstruire depuis un réseau privé sans adresse publique : une Flexible IP reste exigée
Terraformil ne configure pas le système ; remote-exec existe et n'est pas un substitut à Ansible
Collection Ansibleelle ne crée ni ne supprime aucune ressource, et ne découvre que les machines, pas les services managés

Quel outil choisir pour la tâche que vous avez en main

Section intitulée « Quel outil choisir pour la tâche que vous avez en main »

La confusion la plus coûteuse consiste à faire faire à Terraform le travail d'Ansible, en enchaînant des provisionneurs remote-exec dans une ressource. Le résultat marche une fois, puis devient impossible à rejouer : Terraform ne sait pas si la commande a déjà tourné, et son état ne décrit pas le contenu de la machine. Le tableau ci-dessous se lit par la colonne de gauche : identifiez la tâche que vous avez réellement à faire, sans anticiper la suivante.

BesoinChoixPourquoi
Figer un système durci, réutilisable par toute la flottePackerl'image devient l'unité livrable, identique à chaque démarrage
Créer, modifier ou supprimer des ressources ScalewayTerraformil tient un état, donc il sait ce qu'il possède et sait le détruire
Configurer une machine qui existe déjà, ou la remettre en conformitéAnsibleil relit l'état réel à chaque exécution, sans mémoire à maintenir
Appliquer un correctif de sécurité sur une flotte en productionAnsible, puis Packer pour la suiteon répare tout de suite, puis on refait l'image pour que les prochaines machines naissent corrigées
Installer un paquet au premier démarrage d'une machine jetablecloud-init, via Terraformpour une machine éphémère, une image dédiée coûte plus cher qu'elle ne rapporte

Les décisions du volet qu'on ne peut plus reprendre

Section intitulée « Les décisions du volet qu'on ne peut plus reprendre »

Trois choix se prennent une seule fois, et se paient longtemps. Ils n'apparaissent dans aucun message d'erreur, ce qui les rend faciles à escamoter au moment où on les prend.

DécisionPourquoi elle est difficile à reprendre
L'emplacement de l'état Terraformmigrer un état vivant demande terraform init -migrate-state sur toutes les copies, et une erreur laisse deux états divergents pour la même infrastructure
La granularité des stacksdécouper une stack existante impose de déplacer les ressources une à une avec terraform state mv, sans se tromper
La convention de nommage et d'étiquetageelle conditionne le tri de la facture ; renommer après coup casse la continuité des rapports de coût

Ce volet crée des ressources, donc il rencontre des plafonds. Les valeurs ci-dessous viennent de la page officielle des quotas d'Organisation Scaleway, dont la date de validation est le 29 octobre 2025. Elles sont à connaître avant d'écrire une boucle : un count qui les dépasse casse à mi-parcours de l'apply, avec des ressources déjà créées et facturées.

PlafondValeurPortée
Instances DEV1-S10 sans vérification d'identité, 20 avecpar Organisation
VPC256par Organisation
Private Networks100 par VPC, 255 par Organisationle plus bas des deux s'applique
Seaux Object Storage100par Organisation, l'état Terraform en consomme un
Clés API50par Organisation, mais voir la note ci-dessous

Une de ces valeurs est contredite par une autre page officielle, et la règle de cette formation est de le dire plutôt que de choisir celle qui arrange le propos. La FAQ IAM de Scaleway annonce « up to 100 API keys by default » là où la page des quotas dit 50. La page des quotas étant la plus récemment validée, au 29 octobre 2025, c'est elle qui fait foi ici, et l'écart est à vérifier sur votre propre compte avant de dimensionner vos automatisations.

Le plafond des instances mérite une lecture attentive, car il ne dépend pas du crédit disponible mais de la vérification d'identité du compte. Un compte dont seul le moyen de paiement est validé plafonne à dix machines DEV1-S, et plusieurs gammes ne sont pas ouvertes du tout avant vérification. La conséquence pratique est déroutante : terraform plan accepte sans broncher une stack qui déclare douze machines, parce que le plan ne consulte pas les quotas ; c'est l'apply qui échoue, après avoir créé les dix premières. Vous vous retrouvez alors avec une infrastructure à moitié construite, un état qui la décrit fidèlement, et une facture qui court. Vérifiez le plafond avant d'écrire la boucle, pas après l'avoir lancée.

Ces messages sont ceux que vous verrez réellement, relevés en lab sur un compte Scaleway les 8 et 9 septembre 2026. Les reconnaître fait gagner l'heure de recherche qui suit habituellement leur première apparition.

SymptômeCauseSolution
b_ssd volumes are no longer supported. Use Scaleway Block Storage (SBS) volumes insteadl'API Instance ne crée plus de volumes de cette gammepasser à la ressource scaleway_block_volume, ce n'est pas un changement de valeur mais de ressource
Can't delete a private network interface attached to a serverrégression du provider en 2.81.0 et 2.82.0 : la route v2alpha1 refuse une interface attachéepasser en 2.83.0 ou revenir à 2.80.0, ou supprimer l'interface avec scw instance private-nic delete avant de relancer le destroy
Le plugin Packer refuse snapshot_namel'option a quitté la racine du bloc source en 1.5.0la déplacer dans root_volume {} ou block_volume {}, où elle reste valide
terraform plan réussit, terraform apply échoue sur un quotale plan ne consulte pas les quotas de l'Organisationrelever le plafond de la gamme visée avant d'écrire un count
403 intermittents au rafraîchissement, rapportés sur scaleway_baremetal_servercause non confirmée par Scaleway ; le rapporteur soupçonne un rythme d'appels trop élevé (#3616)terraform plan -parallelism=1 quand le symptôme apparaît, SCW_DEBUG=1 pour observer les appels

Ces quatre erreurs partagent une même racine : elles confondent le rôle des outils. Chacune produit un résultat qui fonctionne le premier jour, et qui devient impossible à rejouer ou à détruire ensuite. C'est ce décalage entre le succès immédiat et le coût différé qui les rend difficiles à repérer en revue.

AntipatternConséquenceDiscipline
Configurer les machines avec remote-exec dans Terraforml'état ne décrit pas le contenu de la machine, et rien n'est rejouableTerraform crée, Ansible configure
Faire détruire des ressources par Ansibleaucun état ne suit ce qui existe, les restes deviennent invisiblesseul Terraform détruit ce que Terraform a créé
Rebâtir une image à chaque déploiementle temps de build s'ajoute à chaque livraison, et les snapshots s'accumulent en facturationune image par version applicative, pas par déploiement
Contraintes de version flottantes sur les trois outilsune publication amont change le comportement sans commit de votre côtéépingler les trois, et mettre à jour sciemment

L'infrastructure as code sous l'angle Well-Architected

Section intitulée « L'infrastructure as code sous l'angle Well-Architected »

Le code d'infrastructure déplace le risque : il ne le supprime pas. Les deux piliers ci-dessous posent la question qu'un auditeur poserait sur ce volet, et la discipline qui y répond.

Question clé : combien de temps faut-il pour reconstruire à l'identique ce qui tourne aujourd'hui ? Si la réponse dépend d'une personne, d'un poste de travail ou d'un souvenir, le code d'infrastructure n'a pas rempli son office.

Discipline : versionner les modèles Packer, le HCL Terraform et les playbooks Ansible dans le même dépôt que l'application ; épingler les trois outils à une version exacte ; et vérifier les signatures à l'installation, ce que les trois publient.

Question clé : qui paie ce que le volet a laissé derrière lui ? Les instances se remarquent, les snapshots et les images non. Ils se facturent au gigaoctet stocké, indéfiniment, et n'apparaissent sur aucun tableau de bord tant qu'on ne les cherche pas.

Discipline : détruire ce qui a été créé dans la foulée du lab ; contrôler les familles discrètes, images et snapshots en tête ; et relire la facturation 48 heures plus tard, délai au-delà duquel la consommation est consolidée.

FAQ : questions fréquentes sur l'infrastructure as code Scaleway

Section intitulée « FAQ : questions fréquentes sur l'infrastructure as code Scaleway »

Ces cinq réponses reprennent les questions posées le plus souvent au moment de choisir un outil, et ne contiennent que des faits mesurés ou sourcés dans ce volet : la matrice de destruction du 2026-09-09, les quotas d'Organisation validés au 29 octobre 2025, et la grille tarifaire relevée le 2026-09-08.

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

  • Chaque outil produit l'entrée du suivant : Packer l'image, Terraform l'infrastructure, Ansible l'état courant.
  • La question qui départage est « qui possède la ressource » : Terraform la détruira, Ansible non.
  • Versions de référence : provider Terraform 2.83.0, plugin Packer 1.5.0, collection Ansible 0.5.0.
  • Chez Packer on dit plugin et builder, jamais provider.
  • Les trois publient des sommes de contrôle signées ; Terraform les vérifie seul, les deux autres demandent un geste.
  • Un fichier de verrouillage se versionne : c'est lui qui rend le déploiement reproductible.
  • Terraform et Ansible ne coûtent rien, Packer coûte à chaque build : une Instance, une adresse, un snapshot et une image.
  • Un build interrompu laisse un volume orphelin facturé. On reliste après chaque build, pas seulement après ceux qui échouent.
  • ansible-galaxy install ne met pas à jour sans --upgrade.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn