Sobes.tech
Middle

Quelle est la différence entre la description déclarative et impérative de l'infrastructure?

sobes.tech IA

Réponse de l'IA

La description déclarative se concentre sur l’état final souhaité du système, c’est-à-dire ce qui doit être. L’outil détermine lui-même les étapes pour atteindre cet état.

La description impérative se concentre sur la séquence d’étapes — comment atteindre l’état nécessaire. Vous indiquez explicitement quelles commandes exécuter et dans quel ordre.

Exemples :

  • Déclaratif (Terraform, CloudFormation) : Définir qu’un VPC avec des CIDR, sous-réseaux, tables de routage et groupes de sécurité spécifiques est nécessaire.
  • Impératif (scripts Bash, commandes ad-hoc d’Ansible) : Exécuter une commande pour créer un VPC, puis une commande pour créer un sous-réseau, puis une commande pour lier le sous-réseau au VPC.

Principales différences dans le tableau :

Aspect Description déclarative Description impérative
Focus Ce qui doit être Comment y parvenir
Changement L’outil détermine les étapes Vous définissez les étapes
Idempotence Souvent intégrée Nécessite une implémentation manuelle
Complexité Plus élevée lors de la définition de l’état Plus élevée lors de la gestion de processus complexes
Lisibilité Décrit l’architecture souhaitée Décrit la séquence d’actions

Exemple de configuration (simplifié) :

// Déclaratif (Terraform)
resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t2.micro"

  tags = {
    Name = "WebServer"
  }
}
# Impératif (Bash)
#!/bin/bash
# Créer une instance manuellement (pseudocode)
aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type t2.micro --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'