Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Pulumi - comprendre projet, stack, state et backend

9 min de lecture

logo pulumi

Quand on debute avec Pulumi, on voit vite apparaitre les mots projet, stack, state, backend et preview. Si ces termes restent flous, on peut lancer des commandes sans comprendre ce qu’elles modifient vraiment. Cette page vous donne le modele mental minimum pour lire un projet Pulumi Python local, comprendre ou sont stockees les informations utiles et savoir pourquoi le cycle preview -> up -> destroy reste central dans le parcours KVM/libvirt.

Vous n’allez pas encore provisionner une nouvelle ressource ici. L’objectif est de rendre les prochains guides beaucoup plus lisibles : vous saurez ce que represente la stack dev, ce que contient Pulumi.yaml, pourquoi le backend local compte, et comment un preview annonce l’infrastructure qui va etre creee.

Avant d’ecrire davantage de code, vous devez pouvoir repondre a ces questions simples :

  • ou est defini le projet Pulumi ;
  • ce que designe exactement une stack ;
  • ou Pulumi memorise l’etat de ce qu’il a cree ;
  • a quoi sert le backend ;
  • pourquoi pulumi preview vient avant pulumi up.

Le projet est le dossier qui rassemble votre code, votre runtime et vos dependances. Dans le parcours local de cette section, vous avez cree un projet Python avec un fichier Pulumi.yaml, un fichier __main__.py, un fichier requirements.txt et un environnement venv.

Le projet ne designe donc pas seulement un repertoire. Il pose aussi le cadre du workflow : nom du projet, runtime choisi, packages ajoutes et conventions utiles a l’execution.

Dans un projet local deja initialise, vous pouvez observer ce socle avec :

Fenêtre de terminal
pulumi stack ls
sed -n '1,80p' Pulumi.yaml

Concretement, le fichier Pulumi.yaml indique au minimum :

  • le nom du projet ;
  • sa description ;
  • le runtime utilise ;
  • les packages ajoutes, ici libvirt.

La stack est une instance de votre projet avec sa propre configuration et son propre suivi d’etat. Dans ce parcours, la stack s’appelle dev.

L’idee importante est la suivante : le code du projet peut rester le meme, alors que la stack change le contexte d’execution. C’est elle qui porte la configuration de l’environnement courant.

Dans un projet local prepare, vous pouvez voir la stack avec :

Fenêtre de terminal
pulumi stack ls
pulumi stack select dev

Si la stack dev est selectionnee, cela signifie que les prochaines commandes Pulumi liront sa configuration et agiront sur son etat.

Le state est la memoire de ce que Pulumi connait deja sur votre stack. Il sert a comparer trois choses :

  • ce que dit votre code ;
  • ce que Pulumi a memorise precedemment ;
  • ce qui existe reellement sur la plateforme cible.

Sans ce state, Pulumi ne pourrait pas distinguer une creation, une mise a jour, une suppression ou une ressource deja geree. C’est lui qui rend possible le raisonnement de reconciliation.

Dans la pratique, le state ne remplace pas la verification cote libvirt. Il faut lire les deux ensemble : le state dit ce que Pulumi croit gerer, virsh montre l’etat reel de l’hyperviseur.

Le backend est l’endroit et le mecanisme utilises par Pulumi pour stocker et retrouver le state de vos stacks.

Dans cette section, on part volontairement sur un backend local active avec pulumi login --local. Ce choix a deux avantages pedagogiques :

  • il supprime la dependance immediate a un service SaaS ;
  • il rend plus simple la lecture du fonctionnement de base de Pulumi.

Ce choix n’annule pas l’interet des backends distants. Il permet simplement de comprendre d’abord le coeur du workflow sur une machine locale.

Pour verifier la configuration utile du parcours actuel, vous pouvez utiliser :

Fenêtre de terminal
pulumi config get libvirt:uri --stack dev

Dans le lab valide de cette section, cette commande retourne qemu:///system, ce qui rattache la stack au provider libvirt systeme.

pulumi preview sert a lire le changement avant de l’appliquer. C’est la commande qui vous permet de voir si Pulumi a bien compris votre intention.

Dans le premier guide pratique, le preview doit annoncer au minimum :

  • le reseau pulumi-lab-net ;
  • le disque clone pulumi-lab-vm.qcow2 ;
  • le disque cloud-init ;
  • la VM pulumi-lab-vm.

Un bon debutant ne cherche pas a aller le plus vite possible vers up. Il apprend d’abord a lire un preview, parce que c’est lui qui evite beaucoup de surprises et de corrections apres coup.

Vous pouvez lire le workflow local comme une chaine simple :

  • le projet contient le code et les metadonnees du runtime ;
  • la stack choisit le contexte courant ;
  • le backend stocke le suivi de cette stack ;
  • le state memorise les ressources deja gerees ;
  • le preview annonce l’ecart entre le code et l’etat connu ;
  • up applique cet ecart sur la cible libvirt.

Si une de ces briques reste floue, on se retrouve vite a lancer des commandes en aveugle. Si elles sont claires, le comportement de Pulumi devient beaucoup plus previsible.

Prenons le parcours valide de cette section. Vous avez un projet Python, une stack dev, un backend local et un provider libvirt configure vers qemu:///system.

Quand vous ecrivez le code de la premiere VM :

  • le projet dit quel runtime et quels packages utiliser ;
  • la stack dev fournit la configuration de cette execution ;
  • le backend local retrouve le state associe a dev ;
  • preview calcule les creations a venir ;
  • up cree ensuite le reseau, le disque, le cloud-init et la VM ;
  • destroy ramene la stack a un etat propre pour rejouer le scenario.

Ce n’est pas seulement une suite de commandes. C’est un cycle complet de suivi de l’infrastructure.

PiegePourquoi c’est trompeurBonne lecture
Confondre projet et stackOn croit qu’un seul dossier suffit a definir tout le contexteLe projet porte le code, la stack porte le contexte d’execution
Croire que le state est optionnelOn pense que Pulumi lit seulement le code courantLe state est central pour savoir quoi creer, modifier ou supprimer
Confondre backend et providerLes deux parlent de “cible” ou de “configuration”Le backend stocke le suivi, le provider parle a la plateforme
Sauter previewOn veut aller plus vite vers uppreview est justement la lecture de securite avant action
  • Le projet rassemble le code, le runtime et les packages Pulumi.
  • La stack est l’instance de travail qui porte sa configuration et son suivi.
  • Le backend stocke le state de la stack.
  • Le state permet a Pulumi de raisonner sur les creations, mises a jour et suppressions.
  • pulumi preview est la meilleure commande pour verifier votre intention avant pulumi up.

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn