24
Les logiciels d'administration système V 1.2

Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Embed Size (px)

Citation preview

Page 1: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Les logiciels d'administration système

V 1.2

Page 2: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Présentation

Comment gérer de multiples serveurs de type Unix ?

Solution classique : ssh + rsync + scripts shell => pose problème si le parc est étendu et hétérogène

Cfengine est une tentative de réponse à cette problématique : il permet de décrire la configuration d'un ensemble de serveurs/ordinateurs (DNS, NTP, ...)

Puppet est également un outil de ce type

Page 3: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Cfengine

Marc Burgess - University College – Oslo -1993

Permet de configurer des logiciels à partir de modèles/classes et de déployer des configuration

Effectue « toutes » les actions de base d'un administrateur systeme

Page 4: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Cfengine – Installation

Paquets disponibles pour l'ensemble des distributions Linux et des Unix pas trop anciens (Solaris, Aix, …)

Des versions Windows existent (??)

Page 5: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Cfengine – caractéristiques cfengine s'appuie essentiellement sur 4

programmes : cfkey, cfagent, cfservd et cfrun. cfagent : analyse et exécute les fichiers de

configuration. cfrun : lance les cfagent à distance ; cfservd est un « daemon » serveur de fichiers

intégré à cfengine. Il permet également de lancer cfagent sur une sollicitation réseau ;

cfkey génère une bi-clé utilisée pour sécuriser la connexion entre cfagent/cfrun et cfservd ;

Page 6: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Cfengine - les classes

Définies par l'OS, la date, l'adresse IP, adresse MAC, nom DNS, .....

exemple

control: Actionsequence = ( shellcommands )

shellcommands: redhat.Hr01:: "/usr/local/bin/backup" linux.!redhat.Hr23:: "/usr/local/bin/backup" (aix|sun).Hr02:: "/usr/local/bin/backup"

Page 7: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Cfengine -exemple d'utilisation

# cat /var/cfengine/inputs/cfagent.conf

control: actionsequence = ( shellcommands tidy )

shellcommands: "/usr/bin/id"

tidy: /tmp pattern=*~ recurse=inf age=2

Page 9: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet

se présente comme le successeur de cfengine - récent

écrit en Ruby par Luke Kanies Site reductivelabs.com utilisé par Google et de

nombreuses autres entreprises

Page 10: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet – Caractéristiques 1 serveur : PuppetMaster contenant

les configurations communes Des machines ou noeuds qui

exécutent le démon puppetd appliquent la configuration vérifient par défaut toutes les 20

mn Communication chiffrée utilisant

HTTPS (certificats)

Page 11: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet : le langage Il permet de définir

classes (permet de définir les confs de chaque service)

héritage (permet de regrouper les confs communes)

types d’objets particuliers (définis par puppet, ou par des modules ruby utilisateur)

fonctions utilisateur ...

Page 12: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet – Facter disponible sur les noeuds utilisant

Puppetd, il fournit des variables utilisables dans les templates puppet :

Adresse ip Hostname Distribution et version Toutes autres variables locales

définies par l’utilisateur.

Page 13: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Facter : exemple de sortiemarge:~# facterarchitecture => i386domain => lecastel.lanfacterversion => 1.5.1fqdn => marge.lecastel.lanhardwaremodel => i686hostname => margeinterfaces => eth0,venet0ipaddress => 172.16.0.2ipaddress_eth0 => 172.16.0.2kernel => Linuxkernelrelease => 2.6.24-7-pvekernelversion => 2.6.24macaddress => 00:18:51:af:57:20

Page 14: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Les objets - 1

File, permet de demander qu’un fichier existe, dispose de certains droits, et corresponde éventuellement à un certain contenu, fournit statiquement, ou à travers un modèle (template) avec substitution de variables

Service, permet de déclarer un service, de s’assurer qu’il fonctionne, de le redémarrer dans certaines conditions

Page 15: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Les objets – 2

Package, permet de demander l’installation, la mise à jour ou la désinstallation d’un package, en utilisant le système de packaging natif de l’OS utilisé (ports, deb, packages MacOsX etc.)

User, permet de gérer les utilisateurs unix (dans /etc/passwd) indépendamment de l’OS utilisé.

Page 16: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Exemple 1:

Configuration des résolveurs DNSclass resolv {

file { "/etc/resolv.conf": owner => root, group => root, mode => 644, # Le contenu de ce fichier est servi par l'hôte

puppet dans son partage files/etc/resolv.conf source =>

"puppet://puppet/files/etc/resolv.conf" }}

Page 17: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Exemple 2 : fichier dhcp.ppclass dhcp { package { dhcp3-server: ensure => installed, } file { "/etc/dhcp3/dhcpd.conf": owner => root, group => root, mode => 644, source => [

"puppet://puppet/files/dhcpd/dhcpd.conf" ] } service { dhcp3-server: ensure => running, subscribe => [Package[dhcp3-server],

File["/etc/dhcp3/dhcpd.conf]] }}

Page 18: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Mise en oeuvre

Sur Debian : sur le serveur :apt-get install puppetmaster

Sur le client : apt-get install puppet

Pour le détail voir http://www.debian-administration.org/articles/526

Ou sur Howtoforge

Page 19: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

L'ecosystème Puppet

Des applications ont été développées

Puppet dashboard : interface Web à Puppet Foreman : gestion web de parc avec Puppet

Page 20: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Remarques

Il est très intéressant d'utiliser un outil de gestion de version comme svn ou encore git pour gérer les fichiers (templates, recettes, …) du fichier puppetmaster

Ceci permet de revenir en arrière et de disposer d'information (quoi ? qui ? Quand ? Pourquoi ?) sur les modification

Pour Debian, il est possible d'utiliser du pre-seeding pour répondre automatiquement aux questions de l'installateur de paquets.

Page 21: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet et Git Installer les paquets Debian git-core

# cd /etc/puppet

# git-init-db Le dépot git est créé dans /etc/puppet. Il servira

à stocker les versions des fichiers de configuration

# git commit -a -c "Chgt DNS" effectue une MAJ du dépôt

# git show log affiche l'historique des MAJ

Page 22: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Git et etckeeper

Git peut être utilisé pour gérer le répertoire /etc Il suffit d'installer le paquet etckeeper qui prend

en charge l'installation

Page 23: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

Puppet/Cfengine

Apprentissage plus facile : fichiers de configuration moins complexes

Très puisssant et très expressif Utilisation de Ruby = > empreinte mémoire

supérieure Encore quelques incertitudes pour les sites à

grande échelle (1 serveur gère actuellement jusqu'à 30 clients)

Page 24: Les logiciels d'administration système V 1.2. Présentation Comment gérer de multiples serveurs de type Unix ? Solution classique : ssh + rsync + scripts

En conclusion

Puppet permet de définir les configurations logicielles utilisées => maîtrise des « bonnes pratiques »

Ne fait pas le déploiement : il faut utiliser des outils comme FAI ou SystemImager. Ces outils sont souvent paramétrés pour utiliser cfengine/puppet dans la foulée de l'installation