Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
docpublic:systemes:linux:cfengine [2012/06/25 08:24]
PROCACCIA created
docpublic:systemes:linux:cfengine [2012/06/25 08:54] (current)
PROCACCIA [cfengine par la pratique]
Line 1: Line 1:
 ===== cfengine par la pratique ===== ===== cfengine par la pratique =====
-doc du 16 mai 2005 reprise dans dokuwiki.+doc mai 2005 reprise dans dokuwiki.
  
-Table des matières 
  
-    1  Introduction +===== Résumé ===== 
-     Installation + Ce document décrit pas à pas la mise en place de cfengine. Il s'attache simplement à installer et configurer un serveur de strategie cfengine et de lui associer un client sur lequel sera installé et deployé cfengineEnfin appliquera de façon réguliere les choix de strategie centrale de configurations
-        2.1  Installation rpm +
-        2.2  Contenu du répertoire principal +
-        2.3  Services utilisés  +
-    3  Configuration +
-        3.1  Principe de configuration +
-        3.2  Distribution de la configuration +
-        3.3  update.conf  +
-    4  Cle cfengine +
-    5  Configuration du serveur cfservd +
-        5.1  Définition du cfservd.conf +
-        5.2  Lancement de cfservd  +
-    6  Firewall iptables +
-    7  Client cfengine +
-        7.1  Installation cfengine packagé sur le client +
-        7.2  Cle serveur +
-        7.3  Fichiers de configuration +
-        7.4  Distribution initiale +
-        7.5  Initialisation / Déploiement des fichiers sur le client +
-        7.6  Clé du client +
-        7.7  Echange de clé entre client et serveur +
-            7.7.1  Echange manuel +
-            7.7.2  Echange automatique de confiance  +
-        7.8  Deploiement effectif initial  +
-    8  Exemple pratique de strategie +
-        8.1  Fichier cfagent.conf +
-        8.2  Classes de machines +
-        8.3  Configuration générale +
-        8.4  Configuration propre aux machines linux +
-        8.5  Fichier sources du serveur +
-        8.6  Lancement du client  +
-    9  Package RPM maison de cfengine +
-    10  Configurations évoluées +
-        10.1  Gestion des packages +
-        10.2  Pluggins maison +
  
-    Résumé : Ce document décrit pas à pas la mise en place de cfengine. Il s'attache simplement à installer et configurer un serveur de strategie cfengine et de lui associer un client sur lequel sera installé et deployé cfengine. Enfin appliquera de façon réguliere les choix de strategie centrale de configurations.  +===== Introduction =====
- +
-1  Introduction+
 Le site de référence est www.cfengine.org, on y trouvera les sources du programmes et de la documentation (Tutorial, reference ...). Une tres bonnes documentation de mise en oeuvre pratique est disponible sur http://thierrylhomme.developpez.com/cfengine.html. La suite de ce document est un relevé pas à pas de la mise en oeuvre d'un serveur cfengine et d'un simple client. Ce document à été écrit sous forme de prise de notes des fins didactiques, avec prise en compte des problemes rencontrés au fur et à mesure du deploiement. Le tout se base sur une simple plate-forme mono systeme (Fedora Core 3) , entre un serveur (calaz.int-evry.fr) et un client (arvouin.int-evry.fr) . Dans ces conditions, on ne révellera pas toute la puissance de cfengine, et encore moins ses capacités multi systeme, voir la présentaion évoquée ci-dessus et la doc de référence pour aller plus loin . Le site de référence est www.cfengine.org, on y trouvera les sources du programmes et de la documentation (Tutorial, reference ...). Une tres bonnes documentation de mise en oeuvre pratique est disponible sur http://thierrylhomme.developpez.com/cfengine.html. La suite de ce document est un relevé pas à pas de la mise en oeuvre d'un serveur cfengine et d'un simple client. Ce document à été écrit sous forme de prise de notes des fins didactiques, avec prise en compte des problemes rencontrés au fur et à mesure du deploiement. Le tout se base sur une simple plate-forme mono systeme (Fedora Core 3) , entre un serveur (calaz.int-evry.fr) et un client (arvouin.int-evry.fr) . Dans ces conditions, on ne révellera pas toute la puissance de cfengine, et encore moins ses capacités multi systeme, voir la présentaion évoquée ci-dessus et la doc de référence pour aller plus loin .
  
-2  Installation+===== Installation =====
 Nous avons packagé la distribution cfengine afin d'automatiser son deploiement et ses mises à jour, cela permet aussi dès l'installation sur les clients de distribuer et personnaliser certains fichiers de configuration. voire le chapitre package RPM cfengine plus loin pour les détails du package. Néanmoins, on peux se passer du format RPM et utiliser le tar.gz de base . Nous avons packagé la distribution cfengine afin d'automatiser son deploiement et ses mises à jour, cela permet aussi dès l'installation sur les clients de distribuer et personnaliser certains fichiers de configuration. voire le chapitre package RPM cfengine plus loin pour les détails du package. Néanmoins, on peux se passer du format RPM et utiliser le tar.gz de base .
  
-2.1  Installation rpm+====  Installation rpm ====
  
 +<code>
 [root@calaz /usr/src/redhat/SPECS] [root@calaz /usr/src/redhat/SPECS]
 $ rpm -Uvh /usr/src/redhat/RPMS/i386/cfengine-2.1.14-1_int.i386.rpm $ rpm -Uvh /usr/src/redhat/RPMS/i386/cfengine-2.1.14-1_int.i386.rpm
 Préparation...              ########################################### [100%] Préparation...              ########################################### [100%]
    1:cfengine               ########################################### [100%]    1:cfengine               ########################################### [100%]
 +</code>
  
- +====   Contenu du répertoire principal ====
-2.2  Contenu du répertoire principal+
 Outre les scripts de demarrage ajoutés par notre package /etc/cron.d/cfengine , /etc/init.d/cfengine , /etc/init.d/cfinit et les binaires disponibles dans /var/cfengine/sbin/cf* , le répertoire principal est /var/cfengine Outre les scripts de demarrage ajoutés par notre package /etc/cron.d/cfengine , /etc/init.d/cfengine , /etc/init.d/cfinit et les binaires disponibles dans /var/cfengine/sbin/cf* , le répertoire principal est /var/cfengine
  
 +<code>
 [root@calaz /var/cfengine] [root@calaz /var/cfengine]
 $ ls -R $ ls -R
Line 93: Line 58:
 cf.groups.example              cf.services.example   README cf.groups.example              cf.services.example   README
 cf.linux.example               cf.site.example       update.conf.example cf.linux.example               cf.site.example       update.conf.example
 +</code>
  
 +==== Services utilisés ====
  
-2.3  Services utilisés 
 Le répertoire sbin contien un certain nombre de binaires décrits ici http://thierrylhomme.developpez.com/cfengine.html#executables. Le répertoire sbin contien un certain nombre de binaires décrits ici http://thierrylhomme.developpez.com/cfengine.html#executables.
 Dans cette mise en oeuvre simplifiée , nous nous contenterons d'utiliser le serveur de fichier cfservd et le client de configuration cfagent . On utilisra aussi cfkey afin de générér les clés d'authentification . Plus aller plus loin voir la documentation de référence. Dans cette mise en oeuvre simplifiée , nous nous contenterons d'utiliser le serveur de fichier cfservd et le client de configuration cfagent . On utilisra aussi cfkey afin de générér les clés d'authentification . Plus aller plus loin voir la documentation de référence.
  
-3  Configuration+===== Configuration =====
 Le serveur va distribuer sur les clients les stratégies de configuration. Le serveur de fichiers (de strategie et de configurations) cfservf lira son fihcier de configuration cfservd.conf. Celui ci devra entre autre distribuer le fichier de configuration du service client (cfagent), fichier cfagent.conf Le serveur va distribuer sur les clients les stratégies de configuration. Le serveur de fichiers (de strategie et de configurations) cfservf lira son fihcier de configuration cfservd.conf. Celui ci devra entre autre distribuer le fichier de configuration du service client (cfagent), fichier cfagent.conf
  
-3.1  Principe de configuration+==== Principe de configuration ====
 Le principe est de modifier les stratégies de configuration dans le fichier centralisés cfagent.conf qui se trouve sur le serveur cfengine. Ensuite il s'agit de distribuer ce fichier sur les clients au travers d'une strategie simple et quasi immuable deployée dès l'initialisation d'un client par le fichier update.conf. C'est donc dans ce fichier update.conf qui comme son nom l'indique, va nous permettre avant que le client execute son fichier local de configuration /var/cfengine/inputs/cfagent.conf de mettre à jour ce meme fichier cfagent.conf en fonction des modifications apportées à sa copie centralisée sur le serveur cfengine. Le principe est de modifier les stratégies de configuration dans le fichier centralisés cfagent.conf qui se trouve sur le serveur cfengine. Ensuite il s'agit de distribuer ce fichier sur les clients au travers d'une strategie simple et quasi immuable deployée dès l'initialisation d'un client par le fichier update.conf. C'est donc dans ce fichier update.conf qui comme son nom l'indique, va nous permettre avant que le client execute son fichier local de configuration /var/cfengine/inputs/cfagent.conf de mettre à jour ce meme fichier cfagent.conf en fonction des modifications apportées à sa copie centralisée sur le serveur cfengine.
  
-3.2  Distribution de la configuration +====  Distribution de la configuration ==== 
-Afin d'eviter de ``scier la branche sur laquelle on est assis'' !, bref d'eviter par une erreure de syntaxe de casser le bon fonctionnement de cfengine et ainsi rendre incapables toutes les machines du parc de s'autocorriger, on va ditribuer les fichiers de configuration à partir d'une configuration cfengine tres simple et quasi immuable . C'est pour cela que le client cfagent lit et execute le fichier update.conf avant de se lancer sur (le vif du sujet !) cfagent.conf . De plus , pour rendre plus lisible et plus modulaire le fichiers de configuration cfagent.conf, ce dernier sera eclaté en sous fichiers spécifiques, le fichier cfagent.conf se chargant de faire un include (import) des sous fichiers. Sur le serveur, on créera un répertoire /var/cfengine/masterinputs qui contiendra le cfagent.conf et ses inclusions.+Afin d'eviter de scier la branche sur laquelle on est assis !, bref d'eviter par une erreure de syntaxe de casser le bon fonctionnement de cfengine et ainsi rendre incapables toutes les machines du parc de s'autocorriger, on va ditribuer les fichiers de configuration à partir d'une configuration cfengine tres simple et quasi immuable . C'est pour cela que le client cfagent lit et execute le fichier update.conf avant de se lancer sur (le vif du sujet !) cfagent.conf . De plus , pour rendre plus lisible et plus modulaire le fichiers de configuration cfagent.conf, ce dernier sera eclaté en sous fichiers spécifiques, le fichier cfagent.conf se chargant de faire un include (import) des sous fichiers. Sur le serveur, on créera un répertoire /var/cfengine/masterinputs qui contiendra le cfagent.conf et ses inclusions.
  
-3.3  update.conf+==== update.conf ====
  
 +<code>
 [root@calaz /var/cfengine/inputs] [root@calaz /var/cfengine/inputs]
 $ cat update.conf $ cat update.conf
Line 181: Line 148:
  
      $(workdir)/outputs pattern=* age=7      $(workdir)/outputs pattern=* age=7
 +</code>
  
  
Line 188: Line 155:
 Pour information voici le contenu de masterinputs que nous distriburons. Pour information voici le contenu de masterinputs que nous distriburons.
  
 +<code>
 [root@calaz /var/cfengine/masterinputs] [root@calaz /var/cfengine/masterinputs]
 $ ls $ ls
 cfagent.conf  cf.groups  cf.linux  cf.main  cfservd.conf  update.conf cfagent.conf  cf.groups  cf.linux  cf.main  cfservd.conf  update.conf
 +</code>
  
- +===== Cle cfengine =====
-4  Cle cfengine+
 Afin d'authentifier le serveur et les clients lors des echanges, les services cfservd et cfagent s'accordent sur un echange de clé. Il s'agit de créer la paire de clé pour chaque machine. Pour démonstration, sur le serveur on lance la commande cfkey ci-dessous. Les clients peuvent en faire autant. Ici notre package rpm cfengine contient un script /var/init.d/cfinit qui lance au premier boot d'une station fraichement installée cette commande cfkey. Afin d'authentifier le serveur et les clients lors des echanges, les services cfservd et cfagent s'accordent sur un echange de clé. Il s'agit de créer la paire de clé pour chaque machine. Pour démonstration, sur le serveur on lance la commande cfkey ci-dessous. Les clients peuvent en faire autant. Ici notre package rpm cfengine contient un script /var/init.d/cfinit qui lance au premier boot d'une station fraichement installée cette commande cfkey.
  
 +<code>
 [root@calaz /var/cfengine] [root@calaz /var/cfengine]
 $ /var/cfengine/sbin/cfkey $ /var/cfengine/sbin/cfkey
Line 201: Line 170:
 Writing private key to /var/cfengine/ppkeys/localhost.priv Writing private key to /var/cfengine/ppkeys/localhost.priv
 Writing public key to /var/cfengine/ppkeys/localhost.pub Writing public key to /var/cfengine/ppkeys/localhost.pub
 +</code>
  
 +===== Configuration du serveur cfservd =====
  
-5  Configuration du serveur cfservd 
 Lancement du serveur de fichier cfservd sur le serveur cfengine. Lancement du serveur de fichier cfservd sur le serveur cfengine.
 +<code>
 [root@calaz /var/cfengine] [root@calaz /var/cfengine]
 $ /var/cfengine/sbin/cfservd -F -d 2 $ /var/cfengine/sbin/cfservd -F -d 2
Line 218: Line 188:
 (END OF PARSING /var/cfengine/inputs/cfservd.conf) (END OF PARSING /var/cfengine/inputs/cfservd.conf)
 Finished with /var/cfengine/inputs/cfservd.conf Finished with /var/cfengine/inputs/cfservd.conf
 +</code>
  
 On voit clairement qu'il manque le fichier de configuration cfservd.conf . On voit clairement qu'il manque le fichier de configuration cfservd.conf .
  
-5.1  Définition du cfservd.conf+==== Définition du cfservd.conf ==== 
  
 +<code>
 [root@calaz /var/cfengine/inputs] [root@calaz /var/cfengine/inputs]
 $ cat cfservd.conf $ cat cfservd.conf
Line 254: Line 226:
 /var/cfengine/data 157.159.27.* /var/cfengine/data 157.159.27.*
 /var/cfengine/data 157.159.50.* /var/cfengine/data 157.159.50.*
 +</code>
  
 +==== Lancement de cfservd ====
  
-5.2  Lancement de cfservd +<code>
 [root@calaz /var/cfengine/inputs] [root@calaz /var/cfengine/inputs]
 $ /var/cfengine/sbin/cfservd -F -d 2 $ /var/cfengine/sbin/cfservd -F -d 2
Line 282: Line 255:
 Listening for connections ... Listening for connections ...
 Checking file updates on /var/cfengine/inputs/cfservd.conf (4284bfe4/4284c008) Checking file updates on /var/cfengine/inputs/cfservd.conf (4284bfe4/4284c008)
 +</code>
  
 +Effectivement le serveur c'est bindé en ipv6 ! sur le port cfengine (tcp:5308)
  
-Effectivement le serveur c'est ``bindé'' en ipv6 ! sur le port cfengine (tcp:5308) +<code>
 [root@calaz /var/cfengine/inputs] [root@calaz /var/cfengine/inputs]
 $ lsof -i tcp | grep cfser $ lsof -i tcp | grep cfser
 cfservd   14660    root    4u  IPv6 279008       TCP *:cfengine (LISTEN) cfservd   14660    root    4u  IPv6 279008       TCP *:cfengine (LISTEN)
 +</code>
 +
 +Le serveur cfengine est maintenant opérationnel, il écoute sur le port 5308 et s'apprete a recevoir des connexions depuis les reseaux ip 157.159.27.0/24 et 50.0/24 tels que demandé dans le fichier de configuration cfservd.conf
  
 +===== Firewall iptables =====
  
-Le serveur cfengine est maintenant opérationnel, il écoute sur le port 5308 et s'apprete a recevoir des connexions depuis les reseaux ip 157.159.27.0/24 et 50.0/24 tels que demandé dans le fichier de configuration cfservd.conf 
-6  Firewall iptables 
 On viens de le voir, le serveur écoute sur le port 5308, il faut donc prévoir d'ouvrir son firewall en conséquance. Pour preuve, voici l'exemple de lancement d'un client (arvouin) sans ouverture du port en question: On viens de le voir, le serveur écoute sur le port 5308, il faut donc prévoir d'ouvrir son firewall en conséquance. Pour preuve, voici l'exemple de lancement d'un client (arvouin) sans ouverture du port en question:
  
 +<code>
 [root@arvouin /var/cfengine/inputs] [root@arvouin /var/cfengine/inputs]
 $/var/cfengine/sbin/cfagent -q -v $/var/cfengine/sbin/cfagent -q -v
Line 300: Line 277:
 Connect to calaz.int-evry.fr = 157.159.50.197 on port cfengine Connect to calaz.int-evry.fr = 157.159.50.197 on port cfengine
 cfengine:: Time out cfengine:: Time out
 +</code>
  
 Ouverture du port. Ouverture du port.
  
 +<code>
 [root@calaz /var/cfengine] [root@calaz /var/cfengine]
 $ grep 5308 /etc/sysconfig/iptables $ grep 5308 /etc/sysconfig/iptables
Line 309: Line 287:
 [root@calaz /var/cfengine] [root@calaz /var/cfengine]
 $ /etc/init.d/iptables restart $ /etc/init.d/iptables restart
 +</code>
  
 +=====  Client cfengine =====
  
-7  Client cfengine +====  Installation cfengine packagé sur le client ====
-7.1  Installation cfengine packagé sur le client+
  
 +<code>
 [root@arvouin /var] [root@arvouin /var]
 $rpm -Uvh /root/cfengine-2.1.14-1_int_sample.i386.rpm $rpm -Uvh /root/cfengine-2.1.14-1_int_sample.i386.rpm
 Préparation...              ########################################### [100%] Préparation...              ########################################### [100%]
    1:cfengine               ########################################### [100%]    1:cfengine               ########################################### [100%]
 +</code>
  
 +==== Cle serveur ====
  
-7.2  Cle serveur 
 La clé du serveur a bien été intégrée par le package: La clé du serveur a bien été intégrée par le package:
  
 +<code>
 [root@arvouin /var/cfengine] [root@arvouin /var/cfengine]
 $ls ppkeys/ $ls ppkeys/
 root-157.159.50.197.pub root-157.159.50.197.pub
 +</code>
  
- +==== Fichiers de configuration ====
-7.3  Fichiers de configuration+
 Pour le momment il n'y a rien, c'est au premier lancement de cfagent que l'update.conf assurera le transfert des fichiers de configuration depuis le serveur central. Pour le momment il n'y a rien, c'est au premier lancement de cfagent que l'update.conf assurera le transfert des fichiers de configuration depuis le serveur central.
  
 +<code>
 [root@arvouin /var/cfengine/inputs] [root@arvouin /var/cfengine/inputs]
 $ls $ls
 +</code>
  
- +====  Distribution initiale ====
-7.4  Distribution initiale+
 Voici le contenu du répertoire principal apres l'installation du package RPM. Voici le contenu du répertoire principal apres l'installation du package RPM.
  
 +<code>
 [root@arvouin /var/cfengine] [root@arvouin /var/cfengine]
 $ls -R $ls -R
Line 371: Line 355:
 cf.groups.example              cf.services.example   README cf.groups.example              cf.services.example   README
 cf.linux.example               cf.site.example       update.conf.example cf.linux.example               cf.site.example       update.conf.example
 +</code>
  
- +====  Initialisation / Déploiement des fichiers sur le client ====
-7.5  Initialisation / Déploiement des fichiers sur le client+
 Afin que les fichiers de strategies soient deployés sur le client, il faut que ce dernier dispose d'une copie du fichier de distribution de ces fichiers -> le fichier update.conf evoqué auparavant lors de sa conception sur le serveur central de configuration cfengine. Afin que les fichiers de strategies soient deployés sur le client, il faut que ce dernier dispose d'une copie du fichier de distribution de ces fichiers -> le fichier update.conf evoqué auparavant lors de sa conception sur le serveur central de configuration cfengine.
 Exemple de ditribution par simple copie manuelle, l'idéal étant d'integrer ce fichier dans le package RPM cfengine qui sera installé sur les clients. Exemple de ditribution par simple copie manuelle, l'idéal étant d'integrer ce fichier dans le package RPM cfengine qui sera installé sur les clients.
  
 +<code>
 [root@arvouin /var/cfengine] [root@arvouin /var/cfengine]
 $scp root@calaz:/var/cfengine/masterinputs/update.conf ./inputs/ $scp root@calaz:/var/cfengine/masterinputs/update.conf ./inputs/
 +</code>
  
- +==== Clé du client ====
-7.6  Clé du client+
 Si on lance tout de suite un cfagent (-parse et -verbose ) on constate ceci: Si on lance tout de suite un cfagent (-parse et -verbose ) on constate ceci:
  
 +<code>
 [root@arvouin /var/cfengine/inputs] [root@arvouin /var/cfengine/inputs]
 $/var/cfengine/sbin/cfagent -p -v $/var/cfengine/sbin/cfagent -p -v
Line 395: Line 381:
 cfengine:: Couldn't find a private key (/var/cfengine/ppkeys/localhost.priv) - use cfkey to get one cfengine:: Couldn't find a private key (/var/cfengine/ppkeys/localhost.priv) - use cfkey to get one
 cfengine:: open: No such file or directory cfengine:: open: No such file or directory
 +</code>
  
 +En effet il manque la paire de clé sur le client. Pour la démonstration nous la générons ici manuellement. Dans le cadre d'un deploiement industriel on assurera la création automatique de cette clé par un script (dans notre RPM; cfinit) qui se chargera au premier boot de la station fraichement installée de lancer le cfkey).
  
-En effet il manque la paire de clé sur le client. Pour la démonstration nous la générons ici manuellement. Dans le cadre d'un deploiement ``industriel'' on assurera la création automatique de cette clé par un script (dans notre RPM; cfinit) qui se chargera au premier boot de la station fraichement installée de lancer le cfkey). +<code>
 [root@arvouin /var/cfengine/inputs] [root@arvouin /var/cfengine/inputs]
 $/var/cfengine/sbin/cfkey $/var/cfengine/sbin/cfkey
Line 404: Line 391:
 Writing private key to /var/cfengine/ppkeys/localhost.priv Writing private key to /var/cfengine/ppkeys/localhost.priv
 Writing public key to /var/cfengine/ppkeys/localhost.pub Writing public key to /var/cfengine/ppkeys/localhost.pub
 +</code>
  
- +====  Echange de clé entre client et serveur ====
-7.7  Echange de clé entre client et serveur+
 Pour que la communication entre le client et le serveur cfengine se fasse, les deux machines s'authentifient mutuellement. Le client dispose de la clé publique du serveur avec laquelle il signe l'echange, ce sera au serveur cfengine de verifier cette signature avec sa clé privé. De meme le serveur doit disposer de la clé publique du client afin de proceder à la même verification en sens inverse . Ici le client dispose bien de la clé publique du serveur root-157.159.50.197.pub (distribuée par notre package RPM, sinon il faut faire un scp vers chaque clients ..) Pour que la communication entre le client et le serveur cfengine se fasse, les deux machines s'authentifient mutuellement. Le client dispose de la clé publique du serveur avec laquelle il signe l'echange, ce sera au serveur cfengine de verifier cette signature avec sa clé privé. De meme le serveur doit disposer de la clé publique du client afin de proceder à la même verification en sens inverse . Ici le client dispose bien de la clé publique du serveur root-157.159.50.197.pub (distribuée par notre package RPM, sinon il faut faire un scp vers chaque clients ..)
  
 +<code>
 [root@arvouin /var/cfengine/ppkeys] [root@arvouin /var/cfengine/ppkeys]
 $/var/cfengine/sbin/cfagent  -q -v $/var/cfengine/sbin/cfagent  -q -v
Line 418: Line 406:
 cfengine:: Authentication dialogue with calaz.int-evry.fr failed cfengine:: Authentication dialogue with calaz.int-evry.fr failed
 cfengine:: Unable to establish connection with calaz.int-evry.fr (failover) cfengine:: Unable to establish connection with calaz.int-evry.fr (failover)
 +</code>
  
 En revanche, le serveur ne dispose pas encore de la clé publique de ce client !. En revanche, le serveur ne dispose pas encore de la clé publique de ce client !.
-7.7.1  Echange manuel+ 
 +===  Echange manuel === 
 Nous pouvons proceder à un transfert manuelle de la clé du client vers le serveur : Nous pouvons proceder à un transfert manuelle de la clé du client vers le serveur :
  
 +<code>
 [root@arvouin /var/cfengine/ppkeys] [root@arvouin /var/cfengine/ppkeys]
 $scp localhost.pub root@calaz:/var/cfengine/ppkeys/root-157.159.27.199.pub $scp localhost.pub root@calaz:/var/cfengine/ppkeys/root-157.159.27.199.pub
 root@calaz's password: root@calaz's password:
 localhost.pub                                 100%  426     1.1MB/  00:00 localhost.pub                                 100%  426     1.1MB/  00:00
 +</code>
  
 Mais cela n'est pas tres industrialisable ! Mais cela n'est pas tres industrialisable !
  
-7.7.2  Echange automatique de confiance+===  Echange automatique de confiance ===
 On peux autrement déclarer dans le fichier de configuration du serveur cfservd que l'on accepte de recevoir des clé publiques des machines que nous allons gerer (exemple ici le sous reseau 157.159.50.27.0/24 ) On peux autrement déclarer dans le fichier de configuration du serveur cfservd que l'on accepte de recevoir des clé publiques des machines que nous allons gerer (exemple ici le sous reseau 157.159.50.27.0/24 )
  
 +<code>
 $ grep Trust /var/cfengine/inputs/cfservd.conf $ grep Trust /var/cfengine/inputs/cfservd.conf
   TrustKeysFrom = ( 157.159.27.0/24 )   TrustKeysFrom = ( 157.159.27.0/24 )
Line 446: Line 438:
    
 IP: 157.159.27.0/24 IP: 157.159.27.0/24
 +</code>
  
 Répertoire des cles sur le serveur avant le lancement du client: Répertoire des cles sur le serveur avant le lancement du client:
  
 +<code>
 [root@calaz /var/cfengine/ppkeys] [root@calaz /var/cfengine/ppkeys]
 $ ls $ ls
 localhost.priv  localhost.pub  root-157.159.50.197.pub localhost.priv  localhost.pub  root-157.159.50.197.pub
 +</code>
  
 Lancement du client Lancement du client
 +<code>
 [root@arvouin /var/cfengine/inputs] [root@arvouin /var/cfengine/inputs]
 $/var/cfengine/sbin/cfagent -q -v $/var/cfengine/sbin/cfagent -q -v
Line 471: Line 464:
 Did not have key root-157.159.27.199 Did not have key root-157.159.27.199
 cfservd: Weak authentication of trusted client arvouin.int-evry.fr/::ffff:157.159.27.199 (key accepted on trust). cfservd: Weak authentication of trusted client arvouin.int-evry.fr/::ffff:157.159.27.199 (key accepted on trust).
 +</code>
  
 Répertoire de clés sur le serveur apres le lancement du client: Répertoire de clés sur le serveur apres le lancement du client:
 +<code>
 [root@calaz /var/cfengine/ppkeys] [root@calaz /var/cfengine/ppkeys]
 $ ls $ ls
 localhost.priv  localhost.pub  root-157.159.27.199.pub  root-157.159.50.197.pub localhost.priv  localhost.pub  root-157.159.27.199.pub  root-157.159.50.197.pub
 +</code>
  
 On y retrouve bien le clé du client root-157.159.27.199.pub . On y retrouve bien le clé du client root-157.159.27.199.pub .
  
-7.8  Deploiement effectif initial+====  Deploiement effectif initial ====
 Maintenant que tout est correctement configuré, nous pouvons relancer l'agent avec succes: Maintenant que tout est correctement configuré, nous pouvons relancer l'agent avec succes:
  
 +<code>
 [root@arvouin /var/cfengine/ppkeys] [root@arvouin /var/cfengine/ppkeys]
 $/var/cfengine/sbin/cfagent  -q -v $/var/cfengine/sbin/cfagent  -q -v
Line 521: Line 515:
 cfengine:: source=/var/cfengine/masterinputs/cfservd.conf, dest=/var/cfengine/inputs cfengine:: source=/var/cfengine/masterinputs/cfservd.conf, dest=/var/cfengine/inputs
 Saving the setuid log in /var/cfengine/cfagent.arvouin.int-evry.fr.log Saving the setuid log in /var/cfengine/cfagent.arvouin.int-evry.fr.log
 +</code>
  
 La copie des fichiers réalisés par update.conf a bien eu lieu . Cfagent poursuis sur le vif du sujet , l'excution du cfagent.conf local fraichement mis à jour par l'update.conf !: La copie des fichiers réalisés par update.conf a bien eu lieu . Cfagent poursuis sur le vif du sujet , l'excution du cfagent.conf local fraichement mis à jour par l'update.conf !:
  
 +<code>
  * (Changing context state to: main) *  * (Changing context state to: main) *
  
Line 562: Line 557:
 cfengine:arvouin: Linking files /usr/local/bin/tcsh -> /bin/tcsh cfengine:arvouin: Linking files /usr/local/bin/tcsh -> /bin/tcsh
 cfengine:arvouin: Linking files /usr/local/bin/bash -> /bin/bash cfengine:arvouin: Linking files /usr/local/bin/bash -> /bin/bash
 +</code>
  
 La strategie de configuration cliente c'est donc executée dans la foulée ... nous y reviendrons apres . La strategie de configuration cliente c'est donc executée dans la foulée ... nous y reviendrons apres .
Line 568: Line 563:
 Verification de la présence des fichiers de source masterinputs du serveur sur la destination inputs sur le client: Verification de la présence des fichiers de source masterinputs du serveur sur la destination inputs sur le client:
  
 +<code>
 [root@arvouin /var/cfengine/ppkeys] [root@arvouin /var/cfengine/ppkeys]
 $ls ../inputs/ $ls ../inputs/
 cfagent.conf  cf.linux  cfservd.conf  update.conf.cfsaved cfagent.conf  cf.linux  cfservd.conf  update.conf.cfsaved
 cf.groups     cf.main   update.conf cf.groups     cf.main   update.conf
 +</code>
  
 Remarque; la version anterieur d'un fichier déjà présent et renomée en .cfsaved Remarque; la version anterieur d'un fichier déjà présent et renomée en .cfsaved
  
- Exemple pratique de strategie+=====  Exemple pratique de strategie ===== 
 Nous montrons ici le début d'un configuration plus industrielle avec quelques exemples stratégiques. Nous montrons ici le début d'un configuration plus industrielle avec quelques exemples stratégiques.
  
-8.1  Fichier cfagent.conf+====  Fichier cfagent.conf ====
 Nous éclatons le fichier cfagent.conf en sous éléments par le biais le l'import des sous fichiers. Nous éclatons le fichier cfagent.conf en sous éléments par le biais le l'import des sous fichiers.
  
 +<code>
 $ cat cfagent.conf $ cat cfagent.conf
 ################################################## ##################################################
Line 594: Line 592:
         linux::         linux::
                 cf.linux                 cf.linux
 +</code>
  
- +====  Classes de machines ====
-8.2  Classes de machines+
 Le premier fichier importé est cf.goups qui comprend la liste des classes de machines: Le premier fichier importé est cf.goups qui comprend la liste des classes de machines:
 +<code>
 [root@calaz /var/cfengine/masterinputs] [root@calaz /var/cfengine/masterinputs]
 $ cat cf.groups $ cat cf.groups
Line 616: Line 614:
 autoconfigMozilla = ( arvouin ) autoconfigMozilla = ( arvouin )
 logoint = ( arvouin ) logoint = ( arvouin )
 +</code>
  
- +====  Configuration générale ====
-8.3  Configuration générale+
 Le fichier cf.main contient les définitions et taches (strategies) générales valables pour toutes les machines présentes et futures du parc à gerer. Seules les actions à mener propres à cet exemple sont commentées dans le fichier, pour les directives et variables cfengine, voir la documentation de référence. Le fichier cf.main contient les définitions et taches (strategies) générales valables pour toutes les machines présentes et futures du parc à gerer. Seules les actions à mener propres à cet exemple sont commentées dans le fichier, pour les directives et variables cfengine, voir la documentation de référence.
  
 +<code>
 [root@calaz /var/cfengine/masterinputs] [root@calaz /var/cfengine/masterinputs]
 $ cat cf.main $ cat cf.main
Line 709: Line 708:
    /etc/shadow mode=600 owner=root action=fixall checksum=md5                                                               /etc/shadow mode=600 owner=root action=fixall checksum=md5                                                           
    /var/cfengine/checksum.db  mode=600 owner=root action=fixall    /var/cfengine/checksum.db  mode=600 owner=root action=fixall
 +</code>
  
- +====  Configuration propre aux machines linux ====
-8.4  Configuration propre aux machines linux+
 Exemple de fichier de configuration propre aux machines linux: Exemple de fichier de configuration propre aux machines linux:
  
Line 747: Line 746:
  
  
-8.5  Fichier sources du serveur+====  Fichier sources du serveur ====
 Les differents fichiers et dossiers évoqués dans les stratégies ci-dessus sont stockés sur le serveur cfengine /var/cfengine/data : Les differents fichiers et dossiers évoqués dans les stratégies ci-dessus sont stockés sur le serveur cfengine /var/cfengine/data :
  
 +<code>
 $ mkdir /var/cfengine/data $ mkdir /var/cfengine/data
 $ mkdir /var/cfengine/data/fedora-3/ $ mkdir /var/cfengine/data/fedora-3/
Line 762: Line 762:
 $ ls $ ls
 bashrc  fedora-3  mozilla.cfg bashrc  fedora-3  mozilla.cfg
 +</code>
  
 +====  Lancement du client ====
  
-8.6  Lancement du client +<code>
 [root@arvouin /var/cfengine/ppkeys] [root@arvouin /var/cfengine/ppkeys]
 $/var/cfengine/sbin/cfagent  -q -v $/var/cfengine/sbin/cfagent  -q -v
Line 867: Line 868:
 Existing restart sequence found (/sbin/chkconfig --level 345 nscd on ; /etc/init.d/nscd restart) Existing restart sequence found (/sbin/chkconfig --level 345 nscd on ; /etc/init.d/nscd restart)
 cfengine:arvouin: Matches found for nscd - no restart sequence cfengine:arvouin: Matches found for nscd - no restart sequence
 +</code>
  
 Toutes les opérations se sont réalisées comme prevu . Toutes les opérations se sont réalisées comme prevu .
  
-9  Package RPM maison de cfengine+===== Package RPM maison de cfengine =====
 Voici un exemple de fichier de spec de construction du package cfengine, à partir du tar.gz, il apporte en valeur ajoutée la clé du serveur, les scripts de demarrage (cfengine, cfinit, cron cfengine), la construction de l'aborescence (faite aussi par cfexec ..) l'update.conf initial, eventuellement des pluggins etc .... Cela permet d'industrialiser le deploiement cfengine sur les clients dès leur installation par kickstart. Voici un exemple de fichier de spec de construction du package cfengine, à partir du tar.gz, il apporte en valeur ajoutée la clé du serveur, les scripts de demarrage (cfengine, cfinit, cron cfengine), la construction de l'aborescence (faite aussi par cfexec ..) l'update.conf initial, eventuellement des pluggins etc .... Cela permet d'industrialiser le deploiement cfengine sur les clients dès leur installation par kickstart.
 Pour les details de contruction de packages RPM voir: Pour les details de contruction de packages RPM voir:
Line 877: Line 878:
 http://www.rpm.org/RPM-HOWTO/build.html http://www.rpm.org/RPM-HOWTO/build.html
  
 +<code>
 [root@calaz /usr/src/redhat/SPECS] [root@calaz /usr/src/redhat/SPECS]
 $ cat cfengine.spec $ cat cfengine.spec
Line 996: Line 998:
 * Sat Jul 27 2000 Ian Macdonald <ian@caliban.org> * Sat Jul 27 2000 Ian Macdonald <ian@caliban.org>
 - 1.5.4 packaged as RPM - 1.5.4 packaged as RPM
 +</code>
  
- +===== Configurations évoluées =====
-10  Configurations évoluées+
 Exemple de configurations évoluée (en cours d'écriture ....) Exemple de configurations évoluée (en cours d'écriture ....)
  
-10.1  Gestion des packages+====  Gestion des packages ====
 Plutot que de faire une installation de logiciels à partir de shellcommands lançants rpm ou yum etc ... depuis la version 2.1 de cfengine il est possible d'utiliser la directive package: Plutot que de faire une installation de logiciels à partir de shellcommands lançants rpm ou yum etc ... depuis la version 2.1 de cfengine il est possible d'utiliser la directive package:
  
Line 1008: Line 1010:
 Exemple d'utilisation. Exemple d'utilisation.
  
 +<code>
 control: control:
  
Line 1022: Line 1025:
         RealPlayer pkgmgr=rpm action=install         RealPlayer pkgmgr=rpm action=install
         scilab pkgmgr=rpm action=install         scilab pkgmgr=rpm action=install
 +</code>
  
- +==== Pluggins maison ====
-10.2  Pluggins maison+
 ... à continuer ... ... à continuer ...
docpublic/systemes/linux/cfengine.1340612678.txt.gz · Last modified: 2012/06/25 08:24 by PROCACCIA
[unknown link type]Back to top
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0