En Infrastructure as Code, une approche déclarative décrit l’état attendu, tandis qu’une approche impérative décrit la suite d’actions à exécuter. Cette différence paraît théorique au début, mais elle change directement votre manière de corriger une erreur, de relancer une automatisation et de maintenir un projet dans le temps.
Comprendre cette opposition aide à éviter un mauvais cadrage. On attend souvent d’un outil impératif le comportement d’un moteur déclaratif, ou l’inverse. C’est là que naissent beaucoup de malentendus sur Terraform, Ansible et les autres outils d’automatisation.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- expliquer clairement la différence entre déclaratif et impératif ;
- identifier les avantages et les limites de chaque approche ;
- mieux comprendre pourquoi les outils IaC ne se comportent pas tous de la même façon.
Définition simple
Section intitulée « Définition simple »| Approche | Question centrale | Exemple mental |
|---|---|---|
| Déclarative | ”Quel état final je veux ?" | "Je veux une VM avec 2 vCPU et 4 Go de RAM” |
| Impérative | ”Quelles étapes faut-il exécuter ?" | "Créer la VM, installer les paquets, modifier le fichier, redémarrer le service” |
Dans une logique déclarative, l’outil calcule lui-même comment atteindre l’état décrit. Dans une logique impérative, vous pilotez davantage la séquence d’actions.
Le raccourci mental le plus utile ressemble à ceci :
Un même besoin, deux façons de le décrire
Section intitulée « Un même besoin, deux façons de le décrire »Imaginons que vous vouliez mettre en ligne une application web interne.
- En approche déclarative, vous exprimez surtout l’état cible : une VM doit exister, un réseau doit l’exposer correctement, un DNS doit pointer vers elle, et certaines caractéristiques doivent être respectées.
- En approche impérative, vous décrivez davantage les étapes : créer la machine, installer le serveur web, déposer le fichier de configuration, ouvrir le port puis redémarrer le service.
Le besoin métier est identique. Ce qui change, c’est la manière dont vous pensez le changement et dont l’outil l’exécute.
Pourquoi cette différence compte vraiment
Section intitulée « Pourquoi cette différence compte vraiment »Cette distinction a des conséquences très concrètes :
- sur la reproductibilité ;
- sur la capacité à détecter la dérive ;
- sur la façon de relancer un traitement après échec ;
- sur la manière de lire le code et d’anticiper ses effets.
Une approche déclarative est souvent plus adaptée pour modéliser une infrastructure durable. Une approche impérative est souvent plus naturelle pour décrire une séquence de configuration ou une orchestration opérationnelle.
Ce qui change au moment de la relance
Section intitulée « Ce qui change au moment de la relance »La différence se voit particulièrement quand vous relancez votre automatisation.
- Avec une logique déclarative, vous attendez surtout que le moteur compare le réel à l’état attendu puis calcule l’écart.
- Avec une logique impérative, vous attendez plutôt qu’il rejoue une suite d’actions en espérant qu’elles soient écrites de manière robuste et idempotente.
Pour un débutant, c’est souvent là que le déclic se produit : le déclaratif aide à raisonner en termes de résultat final, l’impératif aide à raisonner en termes de procédure.
Forces et limites
Section intitulée « Forces et limites »Déclaratif
Section intitulée « Déclaratif »Forces :
- excellent pour exprimer un état cible ;
- meilleur alignement avec la notion de plan et de diff ;
- plus adapté aux ressources persistantes ;
- facilite la reproductibilité.
Limites :
- demande souvent de comprendre la notion de state ;
- peut sembler moins intuitive quand il faut raisonner sur le moteur interne ;
- n’élimine pas les cas limites de dépendances, d’import ou de dérive.
Impératif
Section intitulée « Impératif »Forces :
- intuitif pour décrire des suites d’actions ;
- très utile pour configurer des systèmes ;
- permet un contrôle fin sur l’ordre et la logique d’exécution.
Limites :
- plus exposé aux écarts entre machines si l’idempotence est mal pensée ;
- plus difficile à relancer proprement si les étapes ne sont pas robustes ;
- moins adapté pour décrire un état cible global complexe.
Quand chaque approche est la plus confortable
Section intitulée « Quand chaque approche est la plus confortable »| Situation | Approche souvent la plus naturelle | Pourquoi |
|---|---|---|
| Décrire une topologie réseau, des VM et des services managés | Déclarative | Vous voulez surtout exprimer ce qui doit exister |
| Installer des paquets, déposer des fichiers et gérer des services | Impérative ou procédurale | Vous pilotez une suite d’actions sur des systèmes |
| Revoir un changement avant exécution | Déclarative | La comparaison avec l’état cible est centrale |
| Exécuter une procédure d’administration ciblée | Impérative | L’ordre des étapes compte explicitement |
Ce tableau ne dit pas qu’une approche est toujours meilleure. Il aide à voir pourquoi certains outils semblent plus naturels selon le périmètre.
Où se situent les outils les plus courants ?
Section intitulée « Où se situent les outils les plus courants ? »- Terraform est majoritairement déclaratif ;
- CloudFormation l’est aussi ;
- Ansible mêle beaucoup d’éléments déclaratifs dans ses modules, mais sa lecture opérationnelle reste souvent plus proche d’une logique impérative ou procédurale ;
- scripts shell et procédures manuelles sont clairement du côté impératif.
L’idée n’est pas d’opposer ces outils moralement. Il faut surtout comprendre ce que chaque approche rend plus facile ou plus fragile.
Les pièges fréquents
Section intitulée « Les pièges fréquents »Deux erreurs reviennent sans cesse.
- attendre d’un outil impératif qu’il fournisse une vision globale de l’état cible sans effort de structuration ;
- attendre d’un outil déclaratif qu’il gère naturellement toutes les opérations fines à l’intérieur d’un système.
Dans les deux cas, la déception vient d’une mauvaise attente sur le modèle d’exécution, pas forcément d’un mauvais outil.
À retenir
Section intitulée « À retenir »- Déclaratif = décrire l’état attendu ; impératif = décrire la séquence d’actions.
- Les outils IaC ne se distinguent pas seulement par leur syntaxe, mais par leur modèle d’exécution.
- Le déclaratif aide beaucoup pour le provisionnement et la notion d’état cible.
- L’impératif reste très utile pour la configuration fine et les opérations système.
- Mélanger les deux sans comprendre leur logique produit vite de la confusion et de la dette technique.