Introduction#
Généralités#
Administration d’un système#
distribution (Linux) :
maintenir la cohérence d’un ensemble logiciel
installation système :
manuelle (interactive via l’installeur de la distribution) ou
automatique (FAI, cobbler, etc.)
système pré-provisionné (AMIs pour clouds, gold images pour virtualisation, etc.)
installation des logiciels :
par des paquets
à partir de sources (parfois)
gestion du démarrage (bootloader, kernel/initramfs, SysV init, systemd, upstart, etc)
gestion des utilisateurs, de l’authentification, etc.
gestion des ressources (réseau, disques, périphériques)
gestion de la sécurité (pare-feu, etc.)
Administration d’une infrastructure#
ensemble de systèmes (+/- hétérogènes) qui doivent collaborer
vision d’ensemble (urbanisme)
mais il n’existe pas de « distribution Linux » à l’échelle de l’infrastructure
Situation#
Problèmes classiques et défis actuels
gestion de nombreux serveurs et services
dimension et complexité de l’infrastructure toujours croissante
différence entre documentation et état du système :
(au mieux) description macroscopique de l’infrastructure dans un document (textuel ou graphique)
(au mieux) description détaillée de chaque élément de l’infrastructure
difficile à garder à jour
tendance lourde à la virtualisation
généralisation de
[PIS]aaS
même en interne à l’entreprise
on ne gère plus des systèmes mais des services :
nombreux
qui interagissent
Défis#
pouvoir gérer la complexité (et sa croissance)
nécessité de faire converger la description du système (documentation) et son état réel
pouvoir décrire le système et les réactions qu’il devrait avoir dans certaines conditions
intégrer la documentation, le monitoring et de la spécification (déclarative) de l’infrastructure
avoir de bonnes distributions (Debian, RedHat/Centos) n’est plus suffisant
avoir des outils de gestion de la configuration centralisée n’est plus suffisant
Il faut une boîte à outils de la gestion d’infrastructure
Gestion de configuration centralisée#
Gestion de configuration centralisée#
De plus en plus d’outils à disposition :
pour centraliser des fichiers de configuration et les déployer
pour centraliser la configuration (en général) et déployer
pour effectuer des opérations sur un parc de machines
pour communiquer des données au sein d’une infrastructure
pour décrire et superviser son infrastructure
Administrer plusieurs serveurs - avant#
me@laptop:~$ ssh root@server1
root@server1:~# cp /etc/config.conf /etc/config.conf.bak
root@server1:~# vim /etc/config.conf
root@server1:~# service critical-daemon restart
me@laptop:~$ ssh root@server2
root@server2:~# cp /etc/config.conf /etc/config.conf.bak
root@server2:~# vim /etc/config.conf
root@server2:~# service critical-daemon restart
me@laptop:~$ ssh root@server3
[...]
Administer plusieurs serveurs - après#
root@salt:~# vim /srv/salt/service/config.conf
root@salt:~# salt 'server*' state.apply test=True
root@salt:~# salt 'server*' state.apply
Administrer plusieurs serveurs - avant#
Administrer plusieurs serveurs - après#
salt '*' cmd.run 'apt-get update; apt-get -uVf upgrade'