.. -*- coding: utf-8 -*- :orphan: ============== 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 -------------------------------------- .. code-block:: bash 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 ------------------------------------- .. code-block:: bash 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 -------------------------------------- .. image:: media/cssh_original.png :align: center Administrer plusieurs serveurs - après -------------------------------------- .. code-block:: bash salt '*' cmd.run 'apt-get update; apt-get -uVf upgrade'