Utilisation du logiciel d’administration automatique Cfengine Ronan Keryell, Ro
Utilisation du logiciel d’administration automatique Cfengine Ronan Keryell, Ronan.Keryell@enst-bretagne.fr Résumé : cet article présente le système d’automatisation des tâches d’administration système Cfengine avec comme illustration la mise en place d’un environnement logiciel permettant une automatisation de l’installation et de la maintenance d’un système d’exploitation de type UNIX d’un réseau d’ordinateurs. Cfengine est utilisé pour la mise en place et la correction de l’état du système à partir d’un langage déclaratif. Le système exposé est déployé au sein de deux laboratoires de recherche en informatique à l’ENSMP et à l’ENSTBr pour la gestion de machines génériques ou de machines dédiées à un projet de recherche sur les réseaux actifs. 1. Introduction L’installation automatique des ordinateurs est un problème récurrent et naturel pour les informaticiens car, par essence, l’informatique est la science de l’automatisation et il ne s’agit là que de l’appliquer à elle-même : « boot-straper » l’outil lui-même en allant jusqu’à automatiser le déploiement du système d’automatisation. Quoi de plus frustrant en effet que d’installer une machine quand on sait le faire et que cela devient chronophage avec le nombre de machines à installer ?... Le Centre de Recherche en Informatique de l’ENSMP et le Laboratoire Informatique et Télécommunication de l’ENSTBr sont spécialisés en parallélisation, compilation, optimisation de programme et en distribution. Il est donc logique que ces technologies soient appliquées à l’outil informatique lui-même, c’est à dire à l’organisation système, aussi bien des machines des chercheurs, des élèves, des ordinateurs parallèles ou des projets de recherches plus spécifiques comme les réseaux actifs, ou encore des machines personnelles, utilisées pour le télétravail ou autre, avec le déploiement d’accès personnels rapides à Internet tel que ADSL. Il existe de nombreuses méthodes d’installation automatique pour différents systèmes d’exploitations mais, afin de réduire les efforts de développement, nous proposons une méthode en deux phases : • utiliser la méthode d’installation spécifique à un système d’exploitation de manière minimale pour avoir un système tout juste fonctionnel ; • utiliser une méthode générique portable pour terminer l’installation et maintenir le système dans un état fonctionnel, c’est à dire automatiser l’administration système. L’idée est qu’on va factoriser les efforts dans la partie générique de l’installation. Cette partie peut être réalisée avec n’importe quel langage permettant d’interagir avec le système (typiquement des shell-script) mais nous utiliserons ici un langage déclaratif permettant de classifier les machines en se rapprochant d’une méthodologie objet : GNU/Cfengine. Dans cette étude on écarte donc les systèmes qui n’ont pas (encore) de systèmes d’installation automatique, ne seraient-ce que basiques. La suite de l’article présente le système Cfengine (§ 2) suivi d’un résumé de la manière dont il est utilisé au LIT (§ 3). Quelqu’un intéressé par les potentialités de ce type de système pourra regarder directement l’exemple donné dans cette dernière partie afin de se donner une idée. 2. Le logiciel Cfengine Cfengine est un logiciel développé depuis 1993 principalement par Mark BURGESS [Bur01a, Bur01d] dans le cadre d’un projet de recherche concernant l’administration système distribuée et automatisée. Son usage actuel est estimé à une centaine de milliers de nœuds dans le monde Unix et Windows. Le concept de base en est la gestion de la configuration des machines à base d’une politique établie sous formes de règles permettant de centraliser un comportement d’assez haut niveau plutôt que d’avoir à définir les tâches en détail pour tous les cas possibles de machines. L’intérêt du modèle est de définir des actions à effectuer en fonction des états du système (tel service ne marche pas, un disque est plein) plutôt que d’avoir à définir toutes les transitions possibles entre les états (que faire pour passer de l’état (service ne marche pas, répertoire plein) à l’état (service en marche, disque avec de la place libre), ce qui voudrait dire prévoir le produit cartésien des états. Cela permet d’appréhender les évolutions futures de son architecture d’administration et de son parc de machines avec une complexité contrôlable. L’initiateur de ce projet aime le comparer à un système immunitaire où le système réagit par une série d’actions lorsqu’il rencontre telle ou telle situation anormale et progressivement le système doit revenir vers l’état stable pleinement fonctionnel, si possible. 475 Outil et techniques d’administration systèmes et réseaux 2.1 Composants constituant Cfengine Cfengine est en fait constitué principalement de plusieurs composants [Bur01c, Bur01b] : le système de base : • l’ensemble des fichiers de configuration définissant le comportement à adopter, typiquement localisés dans le répertoire /usr/local/share/cfengine reflété par la valeur de la variable d’environnement CFINPUTS. La configuration y est stockée dans le fichier cfengine.conf ; • l’exécutant de Cfengine cfagent doit être lancé régulièrement pour effectuer le travail ; des systèmes optionnels : • un serveur sécurisé de configurations cfservd permettant à des cfagents distants de récupérer leur configuration s’ils ne peuvent pas y accéder par d’autres moyens. Il permet aussi des exécutions à distance de cfagents; • un démon centralisant l’état global du système afin de faire des statistiques sur le fonctionnement du système ; • un outil de représentation graphique de l’état du système. Les noms des exécutables dans la liste précédente concernent la version 2 de Cfengine et non l’ancienne version. Il existe un mode cfengine.el pour EMACS qui permet de rajouter des couleurs et gérer l’indentation des fichiers de configuration pour faciliter encore plus la tâche de l’administratrice(-eur). 2.2 Classes et environnement La configuration d’une machine va dépendre de nombreux aspects : • son rôle dans l’entreprise ; • sa localisation géographique ; • le réseau qui la contient ; sa structure matérielle : • architecture ; • système d’exploitation ; • disques disponibles ; • type de réseau local ; • écran disponible ; Il est clair que le nombre de possibilités est énorme et la manière de gérer cette complexité dans Cfengine est de raisonner par classes de machines suivant différents critères plus ou moins orthogonaux. 2.2.1 Classes « matérielles » Comme Cfengine tourne sur chaque machine qui doit être administrée de cette manière, la classification d’une machine est faite au moment de l’exécution de cfagent et une liste d’attributs qui vont déclarer l’appartenance à autant de classes. Par exemple pour la machine rodomouls.enst-bretagne.fr différentes classes seront automatiquement définies : • l’identité de la machine définit des classes de noms (rodomouls_enst_bretagne_fr, enst_bre- tagne_fr, rodomouls), d’adresses (192_44_75_24), réseau (192_44_75) ; • le système d’exploitation et l’architecture matérielle définissent des classes : solaris, 32_bit, sunos_5_8, sunos_sun4u, sunos_sun4u_5_8, sunos_sun4u_5_8_Generic_108528_09, solaris2_8 d’une part et sparc, sun4u d’autre part ; • le temps et la date définissent des classes temporelle (Thursday, Hr17, Min46, Min45_50, Day20, September, Yr2001). L’idée est de pouvoir éventuellement changer de comportement au cours du temps ; • une classe any à laquelle toute machine appartient. 2.2.2 Classes utilisateur Évidemment les classes précédentes sont de bas niveau et il est indispensable de définir de nouvelles classes à partir de ces dernières ou de définition de netgroup UNIX pour avoir une configuration propre et gérable. Algèbre booléenne sur les classes Partout où une classe peut être utilisée on peut en fait utiliser une expression booléenne de classes avec les opérateurs classiques et les parenthèses. 476 Outil et techniques d’administration systèmes et réseaux Déclaration explicite La manière la plus simple est de définir l’appartenance à des classes en dur dans une action de control : addclasses = ( mon-labo France ) L’intérêt peut être aussi qu’on pourra sortir exceptionnellement d’une classe via une option de ligne de commande (§ 2.2.2.3). Une manière moins triviale de définir l’appartenance à une classe est d’utiliser l’action classes ou son synonyme groups qui permet de définir des classes à partir d’opérations d’union et d’intersection sur d’autres classes ou des netgroup UNIX comme dans : classes: apache_hosts = ( +@n_web www.enstb.org -gavotte.enst-bretagne.fr) cri_sun = ( +@n_cri_sun ) sun_sans_serveur_WWW = ( +@n_cri_sun -@n_web ) L’intérêt de récupérer les netgroup est d’éviter la redondance dans la classification, dans la mesure où on est déjà obligé de faire la part des choses pour gérer les droits d’exportation NFS, etc. Contrôle des classes par ligne de commande On peut définir explicitement l’appartenance à une classe en lançant cfagent avec une option -D ou au contraire en soustrayant l’appartenance à une classe avec l’option -N. L’intérêt est de pouvoir changer le comportement de Cfengine ponctuellement, comme par exemple l’incantation que nous utilisons lors de la fin de l’installation automatique d’UNIX cfagent -DInstallationTime qui permet de spécialiser le comportement des règles pour tenir compte du fait qu’on est en pleine installation du système et que certaines choses sont superflues alors que d’autres sont à faire en plus. Appartenance à une classe par succès d’une commande Un autre moyen d’appartenir ou pas à une classe est de tester le résultat d’une ou plusieurs commande telle que : classes: have_cc = ( “/bin/test -x /usr/ucb/cc” “/bin/test -x /local/gnu/cc” ) La classe have_cc sera vraie si au moins un des test a renvoyé vrai. Classes de retour d’action Afin d’avoir des comportements mettant en œuvre la causalité, une action peut définir un ensemble de classes si elle est exécutée, permettant ainsi l’exécution d’autres classes uploads/Finance/cfengine.pdf
Documents similaires







-
30
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 28, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 5.1641MB