Cfengine

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Outil de gestion de configuration (déploiement de configuration sur un parc de machines)
Créateur Mark Burgess (1993) — le doyen des outils de gestion de configuration
Version actuelle CFEngine 3 (la version 2, historique, est obsolète)
Modèle Agent installé sur chaque nœud, politiques déclaratives (« promises »)
Voir aussi Ansible · Puppet

CFEngine est un outil de gestion de configuration : il permet de déployer et de maintenir de façon déclarative des fichiers de configuration, des services et des paquets sur l'ensemble d'un parc de machines. C'est l'un des tout premiers outils de ce type, créé en 1993 par le chercheur Mark Burgess, bien avant Puppet (2005), Chef (2009) ou Ansible (2012).

Son fonctionnement repose sur la « théorie des promesses » (promise theory) : chaque agent CFEngine évalue localement un ensemble de règles déclaratives (« il doit exister... », « ce fichier doit contenir... ») et corrige lui-même les écarts constatés, de façon idempotente — un principe que l'on retrouve ensuite, sous des formes proches, chez Puppet et Ansible.

Version historique (CFEngine 2)

Les versions 2.x de CFEngine (compilées depuis les sources, exemple : cfengine-2.2.3) sont obsolètes et ne doivent plus être déployées en production. Le projet en est aujourd'hui à sa branche 3, disponible en paquets précompilés (CFEngine Community / Enterprise), avec un langage de politiques différent de celui de la branche 2. Compilation manuelle depuis les sources, dépendances db4/openssl/byacc/flex : ces étapes appartiennent à l'installation de CFEngine 2 et sont mentionnées ici à titre historique uniquement — (à vérifier) pour toute installation neuve, se référer à la documentation officielle de CFEngine 3.

Positionnement face à Ansible et Puppet

CFEngine partage l'essentiel de son terrain avec Ansible et Puppet : déploiement de configuration à grande échelle, idempotence, reporting de conformité. Le comparatif détaillé entre ces outils (agent/agentless, langage, écosystème) est tenu à jour sur la page Ansible plutôt que dupliqué ici. Ce qui distingue CFEngine du reste du trio est son ancienneté et son moteur écrit en C, réputé très économe en ressources — un choix qui explique sa présence historique sur des parcs Unix/Linux volumineux et anciens.

Voir aussi

  • Ansible — comparatif détaillé Ansible / Puppet / Chef / SaltStack
  • Puppet — alternative à agent, langage déclaratif Ruby (DSL)