Automatisation de l’administration système · 2012-01-16 · Automatisation de...

29
Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des solutions Puppet : gestion de configuration de systèmes Capistrano : déploiement d’applications Utilisation dans un service informatique pierre.gambarotto@ .fr

Transcript of Automatisation de l’administration système · 2012-01-16 · Automatisation de...

Page 1: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Automatisation de l’administration systèmePlan

Problèmatique : trop de systèmes, trop de solutionsTypage des solutionsPuppet : gestion de configuration de systèmesCapistrano : déploiement d’applicationsUtilisation dans un service informatique

pierre.gambarotto@ .fr

Page 2: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Problématique : pourquoi plus de systèmes à gérer ?plus de services à gérerapplications web : transfert du coût de gestion du poste client au serveurcomplexité des infrastrucutres : environnements de prod, pré-prod, test, dev …généralisation du poste client

Les solutions triviales et leurs inconvénients :acheter des machines supplémentaires : coût en argent, mauvaise utilisation des ressourcesmatériellesinstaller les nouveaux services sur des systèmes existant : adhérence des applications, frein à lamise à jour : coût maintenance/sécurité, mauvaise utilisation des ressources humaines

Rationalisation des architecturesplus simple de gérer un système avec un nombre réduit de services (1 !)virtualisation des systèmes : meilleure utilisation des ressources matèriellescloud/hébergement : plus de ressources matérielle

Page 3: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Chaque système …

Page 4: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Les solutions techniques pour automatiser

Page 5: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

classification en 3 couches

Page 6: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Installer le système de base2 grandes catégories :

machine réellemachine virtuelle : at home et cloud

Prérequis :accès à la machine physique ou accès authentifié au socle (ou compte pour le cloud)

Résultat :un système configuré, administrable par accès réseau

Gestion par prototype : installer un nouveau système à partir de la sauvegarde d’un ancien

ne gère pas les évolutions : dérive des configurationsla configuration est à faire à chaque fois manuellement

Page 7: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Configurer/mettre à jourscripter la configuration d’un système , une configuration = un script

Prérequissystème configuré, accessible par le réseauun compte administrateur sur le système

Résultatgérer plusieurs systèmes similaires avec la même configurationautomatiser certaines mises à jourrassembler dans un même endroit la description de tout le parcpassage de gestion de machine à gestion de parcautomatisation de l’intégration avec la supervision

Page 8: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Déploiement d’applications délégué à un tiersDéléguer une partie de la gestion d’un système à un tiers

Cas typique : application webserveur http, serveur BD : installation, configuration et mises à jour gérées par une personnedéploiements gérés par une autre personne

Prérequisserveur(s) installé(s) et configuré(s)séparation des comptes d’administrateur système et déploiement d’application

Résultatbonne entente des Administrateurs Systèmes et des Développeursgestion d’architecture de déploiement complexes

Page 9: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Études d’exemplesPuppet : gestion de configuration

Capistrano : déploiement d’applications

Page 10: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Puppet: gestion de configuration

architecture client/serveurconfiguration : décrite avecun DSLconfiguration :implémentation deressourcesressources : package, file,exec, service …

Page 11: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Puppet: DSL

DSL : une configuration est exprimée dans unlangage spécifique

Ressource : brique de basetype de la ressource : fixe les paramètres deconfigurationréaliser la ressource : donner une valeur auxparamètres

12345

file { "/etc/passwd": # nom unique donné à la ressource owner => root, # paramètre owner, valeur donnée : root group => root, mode => 644}

Type de ressourcesFile : gestion de fichier, le contenu d’unfichier peut être défini par un template. Leserveur puppetmasterd sert de serveur defichier.Exec : exécution de scriptPackage : installation de paquetageUser : définition d’utilisateurbien d’autres disponiblesextensible

Page 12: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Langage complet123456789

$ssh = $operatingsystem ? { # $operatingsystem : remonté par facter (redhat|fedora) => 'openssh-server', (debian|ubuntu) => 'ssh', default => 'openssh'}

package { $ssh: # $ssh est la variable définie ci-dessus ensure => installed,}

variables, conditionnelles, gestionde chaînes de caractères, tableauxde valeurs …sur le client, facter collecte desdonnées exposées sous forme devariables.

Page 13: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Gestion des dépendances entre les ressources123456789

10111213141516

file { '/etc/ssh/sshd_config': source => 'puppet:///modules/sshd/sshd_config', # on récupère le contenu du fichier sur le serveur owner => 'root', group => 'root', mode => '640', notify => Service['sshd'], # redémarage de sshd après changement de ce fichier require => Package[$ssh], # on force l'ordre de résolution, le paquetage avant le fichier de configuration}

service { 'sshd': ensure => running, enable => true, # actif au boot de la machine hasstatus => true, hasrestart => true,}

Page 14: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Puppet : organisation des descriptionspar défaut : les ressource sont réalisées sur tous lesclients puppet123456789

10111213141516

node 'machine.domaine.tld' { # restriction de la réalisation de # ressources à un système spécifique }

class NomClasse { # Définit un espace de nommage }include NomClasse # réalisation des ressources définies dans la classe

define mon_type($var1, $var2) { # définition d'une collection de ressources # utilisant var1 et var2 }mon_type { nom : # réalisation du type personnalisé mon_type var1 => valeur, var2 => valeur}

Page 15: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Configuration d’un produit completensemble de classes et de types de ressources personnalisésdéfinition d’une collection de ressourcesfichiers et template définissant le contenu des ressources File

Moduledistribution de la configuration d’un produit completpar exemple :

un serveur Apache et un site virtuelun serveur de base de données et une baseun serveur ldap maître et un serveur ldap esclave

Page 16: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

KerberosServeur esclave :

123456789

1011121314

node 'krb-slave.enseeiht.fr' { include kerberos

$kerberos_realm="INP-TOULOUSE.FR" kerberos::server{$kerberos_realm: master => "krb-master.enseeiht.fr", password => "...", domains => ["enseeiht.fr", ".enseeiht.fr", "ensat.fr", ".ensat.fr", "ensiacet.fr", ".ensiacet.fr","inp-toulouse.fr", ".inp-toulouse.fr"], default_domain => "inp-toulouse.fr" } # extrait, manque conf des principaux kerberos}

Page 17: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

KerberosServeur maître :

123456789

10111213

node 'krb-master.enseeiht.fr' { include kerberos

$kerberos_realm="INP-TOULOUSE.FR" kerberos::server{$kerberos_realm: password => "...", domains => ["enseeiht.fr", ".enseeiht.fr", "ensat.fr", ".ensat.fr", "ensiacet.fr", ".ensiacet.fr","inp-toulouse.fr", ".inp-toulouse.fr"], default_domain => "inp-toulouse.fr" } # extrait, manque conf des principaux kerberos}

Page 18: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Kerberos : export de ressource des esclaves vers lemaître

123456789

101112131415161718

class kerberos # extrait define server($realm="", $password, $domains="", $master=true, $default_domain="") { case $master { true: { # définition config pour le serveur maître } default:{ # slave server with master defined @@file{"/etc/krb5kdc/$realm_real/servers/$fqdn": tag => "kerberos_$realm_real", ensure => present, owner => root, group => root, mode => 640, } ... other stuff } }}

Gestion de parc@@file{ ... } : ressource définie sur unclient puppet, réalisée sur un autre clientpuppetles constituants définissant la ressource(ici de type File) sont stockés sur leserveur

Page 19: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Kerberos : réalisation de la ressource définie sur lesesclaves sur le maître :

123456789

101112131415161718

class kerberos # extrait define server($realm="", $password, $domains="", $master=true, $default_domain="") { case $master { true: { File <<| tag == "kerberos_$realm_real" |>>{ } # other stuff } default:{ # slave server with master defined } } }}

Gestion de parcréalisation de ressources exportées : File <<|... filtre ... |>> {}les informations stockées par un client puppetsur le serveur sont utilisées pour définir laconfiguration d’un autre client puppet

Sur le maître, un fichier portant le nom del’esclave est crée dans/etc/krb5kdc/$realm_real/servers.le script de propagation maître => esclavespeut maintenant utiliser cette information

Page 20: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Puppet : bilanPuppet permet de rédiger des procédures d’installation et de configuration complètes:

Avantagesla documentation de la procédure est la procédure elle mêmela mise à jour de la procédure permet la mise à jour de tous les serveurs sur lesquels elle estemployée.caractère open-source : la communauté redistribue des définitions complètes de modules.gestion centralisée : la configuration d’un client peut être définie à partir de celles d’autres clientspermet à un grand nombre de personnes de collaborer

Inconvénientscourbe d’apprentissage longuearchitecture structurante, complexe à mettre en oeuvre au niveau organisation

Page 21: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Études d’exemplesPuppet : gestion de configuration

Capistrano : déploiement d’applications

Page 22: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Capistrano

librairie rubypermet de décrire et d’exécuter des scripts surplusieurs machinesemploi typique : déployer une application websur des systèmes déjà configurésgestion de tâches interdépendantes (à laMakefile)surcouche SSH pour la gestion des connexionsgestion par transaction possible

Page 23: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Capistrano : syntaxefichier Capfile :

123456789

1011

role :db, 'postgres.domain.tld' # définition de serveurs avec leur rôle associérole :app, 'backend.domain.tld'role :web, 'frontend.domain.tld'set :user, "pierre" # définition de variable

desc "Description de la tâche" # définition d'une tâchetask :my_task, :roles =>:app,:web do # restriction de la tâche aux serveurs remplissant les rôles spécifiés run "echo #{user} fait des choses > /tmp/example"end

after("another_task, "my_task") # ordonnancement des tâches

Invocation : cap my_task

L’action de la tâche my_task est exécuté sur les serveurs :app(backend.domain.tld) et:web(frontend.domain.tld) avec le login pierre.

Page 24: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Capistrano : librairie de baseActions possibles dans une tâche capistrano :

exécution de commande sur un serveur distant : run, paralleltransfert de fichiers : local vers distant : put, uploadtransfert de fichiers : distant vers local : get, download

Capistrano est fourni par défaut avec des tâches adaptées aux conventions suivantes :

tout le code réside dans un SCM, type subversion ou gitles serveurs visés : SGBD, HTTP

1234567

cap deploy:setup # initialisation : création de répertoire

cap deploy:update # déploiement du code à partir de la dernière version du SCM

cap deploy:start, deploy:stop, deploy:restart # contrôle de l'exécution de l'application

cap deploy:revert # retour à la version précédente

Page 25: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Capistrano : bilanCapistrano permet d’automatiser le déploiement d’une application dans des environnementscomplexes (multi-serveurs).

Les plussimple : makefile+sshfait gagner beaucoup de tempsla configuration par défaut est utilisable sanscomprendre le produitcommunauté : tâches spécifiques pour certainsenvironnements/déploiements spécifiques

Les moinsapprentissage pour étendre les tâches par défauton peut gérer entièrement un serveur distant : ce n’est pas le but !

Page 26: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Récapitulatif des bénéfices de chaque type de solutionInstallation initiale du système

réduction du coût d’installation d’une machineutilisation optimisée des ressources matérielles1 système == 1 service : réduction du couplage, facilité d’adminitration/évolution

Configuration des systèmescentralisation des descriptions : modulariser, réutilisergestion de parc : automatiser l’inscription à la supervision

Délégation de déploiementséparation des rôles développeur/administrateurcommunication par spécification d’interface

Page 27: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Comment intégrer ces produits dans son servicePolitique d’un service informatique

nombre de personnescentralisationorganisation (hiérarchie)

Méthodologies : COMMUNIQUER !

approche de la base : faible nombre, peucentralisé, organisation lâche

approche descendante : organisation forte,centralisée, nombre importantla réalité est souvent entre les extrêmes …

Page 28: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Faire intervenir les solutions

collaboration développeur/sysadmin : produittype Capistranoapproche techniquenombreux retours d’expérience

approche institutionnelleapproche formelle : décrire pour mieux gérernécessite un engagement politiquecaractère structurant des produits type Puppet

Page 29: Automatisation de l’administration système · 2012-01-16 · Automatisation de l’administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des

Conclusion et perspectiveDépart

explosion du nombre de systèmes à gérerpléthore de solutions techniques

Arrivéedes cases où mettre les solutions2 exemplescomment insérer ces solutions dans son quotidien

Vos questions ?