Adrien's log

Yet Another Note Pad

CFEngine et Debian Wheezy : installation client/serveur

by adrien on 26 septembre 2012

Qu’est-ce ?

CFEngine est un système de gestion de configuration. On écrit notre configuration système dans un fichier dans un langage propre à CFEngine, puis on le place dans le répertoire adéquat et enfin il se trouve répliqué et exécuté sur les clients. Cette solution permet de maintenir un parc de machines dans un état voulu. Pour plus d’infos, voir le site de CFEngine.

Pourquoi un article ? Tout simplement parce que j’en ai bavé pour l’installer sur une machine sous Debian Wheezy : les fichiers de configuration de CFEngine semble ne pas convenir à une installation de type client/serveur (oui, parce que CFEngine, on peut l’utiliser uniquement en local si on le souhaite).

UPDATE: De ce que j’ai pu voir durant mes expérimentations, il semble que le paquet fourni par Apt est bogué. J’ai rencontré des problèmes durant la synchronisation des noeuds. Pour résoudre cela, j’ai utilisé le paquet (.deb) fournit sur le site de CFEngine.

Installons la bête !

Nous allons nous occuper du serveur puis du client. Nous récupèrerons les fichiers du serveur pour configurer le client plus rapidement.

Le serveur

Primo, installer CFEngine !

1
apt-get install cfengine3

Secondo, refaire les liens problématiques :

1
2
3
4
5
6
7
rm -rf /var/lib/cfengine3/inputs
 
rm -rf /etc/cfengine3
 
ln -s /var/lib/cfengine3/inputs /etc/cfengine3
 
ln -s /var/lib/cfengine3/inputs /var/cfengine

Tertio, activer les services CFEngine. Pour cela, dans /etc/default/cfengine3, passer les lignes serverd et execd à 1 pour le serveur. Pour un client, seule la ligne « execd » sera nécessaire. Et enfin, démarrer le service :

1
service cfengine3 start

Dernière étape, les fichiers de configuration !

Copiez-les depuis /usr/share/doc/cfengine3/expample_config dans /var/lib/cfengine3/inputs et /var/lib/cfengine3/masterfiles (ce dernier dossier peut ne pas exister, dans ce cas il faut le créer).

Ensuite, il faut modifier les fichiers de configuration que l’on vient de copier de sorte qu’ils collent bien à ce que l’on veut, à savoir une architecture client/serveur.

Pour le fichier promises.cf :

Allez chercher la partie « body server control » et ajouter l’adresse IP du client ou un masque d ‘adresse à accepter genre « 192.168.1.* » sur les trois lignes. Cela permet d’autoriser la communication avec les clients (échange de clés, envoie des fichiers de configuration, …).

Pour le fichier update.cf :

Le fichier update.cf doit être adapté pour une utilisation client/serveur car, d’origine, il est écrit pour une utilisation en local seulement. C’est pas bien compliqué.

Commencez par trouver la section « bundle agent update », puis sous « files », remarquez la ligne copy_from. Il va falloir remplacer « localhost » par l’adresse IP du serveur CFEngine.

« mycopy » représente une fonction. Mais cette fonction n’est pas adaptée pour la copie à travers le réseau. Il va donc falloir l’adapter elle aussi. Pour cela, recherchez la ligne « body copy_from mycopy(from,server) ». Entre les crochets et en dessous du texte existant, il va falloir ajouter les lignes suivantes :

1
2
3
servers => { "${server}" };
verify => "true";
purge => "true";

Sauvegardez et quittez.

Pour le fichier site.cf :

Ici, nous allons autoriser les clients à venir piocher les fichiers de configuration sur le serveur.

Commencez par localiser la partie « bundle server access_rules() », puis effacez le contenu sous « access: ». Vous le remplacerez par :

1
2
3
4
5
"/var/cfengine"
    admit => { "127.0.0.1", "UNEIPOUUNMASQUE" };
 
"/var/lib/cfengine3/masterfiles"
    admit => { "127.0.0.1", "UNEIPOUUNMASQUE" };

 

UPDATE: Dans son commentaire, bernard nous conseille d’utiliser l’adresse IP de la carte réseau, plutôt que celle de loopback dans le but de pouvoir bénéficier de la class ‘am_policy_hub’.

Sauvegardez et quittez.

Passons à la dernière étape : l’initialisation du serveur. Cela se passe avec la commande suivante :

1
cf-agent -B -s IPDUSERVEUR

Le serveur va se bootstraper sur lui-même.

Le client

Pour le client, recommencez l’opération de réparation des liens symboliques vue plus haut ainsi que le démarrage du service « execd ».

Enfin copiez le contenu de /var/lib/cfengine3/inputs du serveur dans celui du client.

Puis initialisez le client avec le commande suivante :

1
cf-agent -B -s IPDUSERVEUR

Le client va s’initialiser et se configurer suivant la configuration que vous lui avez demandé. Vous mettrez vous fichiers .cf perso dans le répertoire masterfiles du serveur et modifierez le fichier promises.cf en conséquence. La configuration des clients se fera automatiquement.

Voilà un pas de plus vers la domination du monde !

3 thoughts on “CFEngine et Debian Wheezy : installation client/serveur

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.