{"id":1335,"date":"2013-06-06T22:14:26","date_gmt":"2013-06-06T20:14:26","guid":{"rendered":"http:\/\/blog.mageia.org\/fr\/?p=1335"},"modified":"2013-07-26T11:32:39","modified_gmt":"2013-07-26T09:32:39","slug":"ils-font-mageia-lequipe-sysadmin-installation","status":"publish","type":"post","link":"https:\/\/blog.mageia.org\/fr\/2013\/06\/06\/ils-font-mageia-lequipe-sysadmin-installation\/","title":{"rendered":"Ils font Mageia &#8211; l&rsquo;\u00e9quipe Sysadmin : Installation et configuration logicielles sur les serveurs de Mageia"},"content":{"rendered":"<p id=\"magicdomid14\" style=\"text-align: justify;\">Au sein du projet Mageia, l&rsquo;\u00e9quipe <a href=\"https:\/\/wiki.mageia.org\/en\/Sysadmin_Team\">sysadmin<\/a> (administrateurs syst\u00e8me) est responsable de la mise en place et de la maintenance de toute\u00a0 l&rsquo;infrastructure de Mageia, aussi bien pour les utilisateurs que pour les contributeurs. Pour aider le public \u00e0 comprendre ce que fait l&rsquo;\u00e9quipe, et pour partager des id\u00e9es avec d&rsquo;autres administrateurs syst\u00e8me, nous allons publier une s\u00e9rie de billets pour expliquer notre travail.<\/p>\n<p id=\"magicdomid15\" style=\"text-align: justify;\">Nos principales t\u00e2ches sont :<\/p>\n<div id=\"magicdomid16\">\n<ul style=\"text-align: justify;\">\n<li>Installation des serveurs dans le centre de donn\u00e9es<\/li>\n<li>Installation et configuration des divers logiciels sur les serveurs de Mageia<\/li>\n<li>Diverses t\u00e2ches d&rsquo;administrateur, telles que la mise \u00e0 jour des droits d&rsquo;acc\u00e8s des utilisateurs, le retrait de paquetages, les mouvements de paquetages entre les d\u00e9p\u00f4ts, etc.<\/li>\n<li>D\u00e9veloppement et maintenance des diff\u00e9rents outils, tels que les composants du syst\u00e8me de construction des paquetages.<\/li>\n<\/ul>\n<p id=\"magicdomid32\" style=\"text-align: justify;\">Ce premier billet pr\u00e9sente le proc\u00e9d\u00e9 utilis\u00e9 pour l&rsquo;installation et la configuration des logiciels sur les serveurs de Mageia, expose les\u00a0 raisons pour lesquelles nous le faisons et pourquoi vous pourriez utiliser un processus similaire pour g\u00e9rer vos propres serveurs.<\/p>\n<p id=\"magicdomid33\" style=\"text-align: justify;\">Un r\u00e9sum\u00e9 du proc\u00e9d\u00e9 utilis\u00e9 pour mettre en place les logiciels sur les serveurs de Mageia pourrait \u00eatre :<\/p>\n<div id=\"magicdomid34\" style=\"text-align: justify;\">\n<ul>\n<li>Tous les logiciels sont install\u00e9s en utilisant les paquetages<\/li>\n<li>Tous les paquetages sont construits en utilisant le syst\u00e8me de compilation<\/li>\n<li>Tous les paquetages sont install\u00e9s et configur\u00e9s en utilisant puppet<\/li>\n<li>Les raisons de proc\u00e9der ainsi peuvent para\u00eetre \u00e9videntes pour beaucoup d&#8217;empaqueteurs de Mageia. Ce billet va essayer de les expliquer aux\u00a0 personnes qui ne sont pas n\u00e9cessairement empaqueteurs.<\/li>\n<\/ul>\n<\/div>\n<h2 id=\"magicdomid38\" style=\"text-align: justify;\">Construction et installation du dispositif logiciel<\/h2>\n<p id=\"magicdomid39\" style=\"text-align: justify;\">Une des t\u00e2ches les plus communes de l&rsquo;administrateur syst\u00e8me est l&rsquo;installation ou la mise \u00e0 jour de logiciels. Quand votre distribution Linux fournit des paquetages pour le logiciel que vous d\u00e9sirez utiliser, c&rsquo;est facile : le paquetage peut \u00eatre install\u00e9 \u00e0 l&rsquo;aide du gestionnaire de paquetages. Cependant, dans bien des cas, le logiciel dont vous avez besoin n&rsquo;est pas disponible pour la distribution utilis\u00e9e, ou n&rsquo;est pas dans la version d\u00e9sir\u00e9e.<\/p>\n<h3 id=\"magicdomid60\" style=\"text-align: justify;\">Compiler manuellement<\/h3>\n<p id=\"magicdomid62\" style=\"text-align: justify;\">Beaucoup de gens pensent que la solution la plus simple dans ce cas est de t\u00e9l\u00e9charger le code source du logiciel, de suivre les instructions de compilation et d&rsquo;ex\u00e9cuter le script d&rsquo;installation ou le Makefile fourni. Il y a cependant plusieurs inconv\u00e9nients \u00e0 op\u00e9rer ainsi :<\/p>\n<div id=\"magicdomid63\" style=\"text-align: justify;\">\n<ul>\n<li><b>Installation des d\u00e9pendances d<\/b><strong>e compilation<br \/>\n<\/strong>Il faut que toutes les d\u00e9pendances de compilation soient install\u00e9es sur le syst\u00e8me. Le plus souvent, on souhaite compiler le logiciel sur un serveur de construction de paquetages d\u00e9di\u00e9 dans le but d&rsquo;\u00e9viter l&rsquo;installation de trop de d\u00e9pendances de compilation sur la machine cible, puis de copier sur cette derni\u00e8re les fichiers binaires obtenus.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid65\" style=\"text-align: justify;\">\n<ul>\n<li><b>Gestion des d\u00e9pendances<br \/>\n<\/b>Si des archives tar ou un serveur NFS sont utilis\u00e9s pour distribuer les fichiers binaires vers les machines cibles, il faut trouver et installer les d\u00e9pendances requises sur chaque machine o\u00f9 le logiciel sera utilis\u00e9. Vous aurez \u00e0 noter la liste des d\u00e9pendances quelque part, ainsi vous saurez ce qui doit \u00eatre install\u00e9 si vous avez besoin d&rsquo;utiliser ce logiciel sur un nouvelle machine.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid67\" style=\"text-align: justify;\">\n<ul>\n<li><b>Mise \u00e0 jour d<\/b><b>e<\/b><b> logiciel<\/b><b>s<\/b><b><br \/>\n<\/b>Lors de la compilation d&rsquo;un logiciel, il est souvent n\u00e9cessaire de d\u00e9finir des options sp\u00e9cifiques dans un script ou un fichier de configuration. Certains logiciels peuvent \u00eatre difficiles \u00e0 compiler, ou exiger des op\u00e9rations ou des configurations complexes. Lors de la mise \u00e0 jour du logiciel vers une version plus r\u00e9cente, il est probablement souhaitable de garder la m\u00eame configuration de compilation qu&rsquo;auparavant, pour \u00e9viter d&rsquo;introduire des modifications inutiles qui pourraient causer des d\u00e9g\u00e2ts. Tout cela est difficile \u00e0 m\u00e9moriser et \u00e0 moins de le faire tous les jours, vous l&rsquo;oublierez probablement. Aussi, il est pr\u00e9f\u00e9rable d&rsquo;enregistrer les instructions de compilation dans un fichier pour pouvoir les r\u00e9-utiliser \u00e0 la prochaine mise \u00e0 jour de ce logiciel.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid69\" style=\"text-align: justify;\">\n<ul>\n<li><b>Application de patchs logiciels<br \/>\n<\/b>Il est parfois n\u00e9cessaire d&rsquo;apporter de petites modifications au logiciel pour sa compilation, pour qu&rsquo;il fonctionne, ou pour y introduire de nouvelles fonctionnalit\u00e9s. Il est possible d&rsquo;appliquer les modifications avant de commencer le processus de compilation. Cependant, ces modifications seront perdues la prochaine fois qu&rsquo;une nouvelle archive source sera extraite pour mettre le logiciel \u00e0 jour.<br \/>\nAfin de pouvoir appliquer les m\u00eames modifications aux futures versions, vous voudrez enregistrer ces changements quelque part sous forme de patch.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid72\" style=\"text-align: justify;\">\n<ul>\n<li><b>Conserver un journal des modifications<br \/>\n<\/b>Il est facile d&rsquo;oublier pourquoi certaines modifications ou mises \u00e0 jour furent r\u00e9alis\u00e9es sur un logiciel particulier. En particulier si vous n&rsquo;\u00eates pas seul(e) et travaillez au sein d&rsquo;une \u00e9quipe, vous voudrez conserver un journal des modifications que vous r\u00e9alisez sur le logiciel que vous avez compil\u00e9 et install\u00e9.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid74\">\n<ul style=\"text-align: justify;\">\n<li><b>Conna\u00eetre la version install\u00e9e du logiciel, d\u00e9sinstallation ou mise \u00e0 jour du logiciel<br \/>\n<\/b>Conna\u00eetre la version actuellement install\u00e9e d&rsquo;un logiciel est tr\u00e8s utile. Il est aussi tr\u00e8s utile de pouvoir d\u00e9sinstaller un logiciel, ou d&rsquo;installer une version diff\u00e9rente pour des tests ou deboguage, ou revenir \u00e0 la version pr\u00e9c\u00e9dente en cas de probl\u00e8me. En utilisant la proc\u00e9dure d&rsquo;installation standard, la plupart des logiciels installent leurs fichiers en de nombreux endroits diff\u00e9rents sur le syst\u00e8me. Savoir quels fichiers sont install\u00e9s o\u00f9, et quelle version est en place, est alors difficile voire impossible. Lors de l&rsquo;installation d&rsquo;une nouvelle version du logiciel, les scripts d&rsquo;installation remplacent les anciens fichiers, mais n&rsquo;enl\u00e8vent pas les fichiers obsol\u00e8tes, ce qui peut \u00eatre source de confusion ou de probl\u00e8mes. Certains \u00e9vitent ce genre de probl\u00e8mes en installant chaque partie du logiciel dans son propre r\u00e9pertoire, en incluant le num\u00e9ro de version dans le nom du r\u00e9pertoire. Cela peut cependant cr\u00e9er d&rsquo;autres probl\u00e8mes, la plupart des logiciels ne sont pas pr\u00e9vus pour \u00eatre install\u00e9s de cette fa\u00e7on et des astuces complexes sont requises pour leur fonctionnement. Et la s\u00e9lection de la version qui doit \u00eatre utilis\u00e9e requi\u00e8re des liens symboliques complexes ou des mises \u00e0 jour de la variable d&rsquo;environnement PATH. Cela devient encore plus compliqu\u00e9 en cas d&rsquo;installation de diff\u00e9rents logiciels interd\u00e9pendants. Afin d&rsquo;\u00e9viter ce genre de probl\u00e8me, la meilleure solution consiste \u00e0 utiliser certains outils pour tracer quels fichiers sont install\u00e9s o\u00f9, et de quelle version.<\/li>\n<\/ul>\n<h3 id=\"magicdomid93\" style=\"text-align: justify;\">Utiliser des paquetages<\/h3>\n<p id=\"magicdomid95\" style=\"text-align: justify;\">Pour r\u00e9soudre tous ces probl\u00e8mes, vous choisirez donc d&rsquo;utiliser des outils sp\u00e9cifiques. Vous pourriez vouloir commencer par \u00e9crire vos propres scripts et outils pour g\u00e9rer ce genre de choses. Il est cependant judicieux d&rsquo;utiliser les outils d\u00e9j\u00e0 disponibles plut\u00f4t que d&rsquo;en recr\u00e9er soi-m\u00eame. Les meilleurs outils pour r\u00e9soudre ce genre de probl\u00e8me sont les gestionnaires de paquetages.<\/p>\n<p id=\"magicdomid96\" style=\"text-align: justify;\">Si vous n&rsquo;avez jamais cr\u00e9\u00e9 de paquetages auparavant, il sera n\u00e9cessaire de passer un peu de temps pour apprendre comment le faire. Cependant cela vous fera gagner beaucoup de temps par la suite. Utiliser les paquetages pour construire et installer les logiciels pr\u00e9sente beaucoup d&rsquo;avantages :<\/p>\n<div id=\"magicdomid97\" style=\"text-align: justify;\">\n<ul>\n<li><b>Installation des d\u00e9pendances d<\/b><b>e compilation<br \/>\n<\/b>Les paquetages permettent de compiler le logiciel sur une machine d\u00e9di\u00e9e, produisant ainsi des paquetages qui seront install\u00e9s sur la machine cible sans avoir besoin d&rsquo;installer aucune des d\u00e9pendances de compilation. Les sp\u00e9cifications du paquetage permettent aussi de d\u00e9finir la liste des d\u00e9pendances de compilation, ils peuvent donc \u00eatre install\u00e9s automatiquement sur la machine de compilation au moment de la construction du paquetage, et \u00e9ventuellement retir\u00e9s par la suite.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid99\" style=\"text-align: justify;\">\n<ul>\n<li><b>Gestion automatique des d\u00e9pendances<br \/>\n<\/b>Tenir compte des d\u00e9pendances est chronophage et pas toujours facile. Heureusement, la plupart des syst\u00e8mes d&#8217;empaquetage analysent les fichiers inclus dans le paquetage pour d\u00e9tecter automatiquement les d\u00e9pendances du logiciel. Les biblioth\u00e8ques perl, python, ruby, PHP, C\/C++ sont habituellement d\u00e9tect\u00e9es automatiquement pendant la construction du paquetage. Pour les d\u00e9pendances qui ne peuvent pas \u00eatre automatiquement d\u00e9tect\u00e9es, il est possible de d\u00e9finir explicitement des d\u00e9pendances dans le paquetage. Toutes ces d\u00e9pendances peuvent alors \u00eatre install\u00e9es automatiquement par le gestionnaire de paquetages au cours de l&rsquo;installation du logiciel.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid101\" style=\"text-align: justify;\">\n<ul>\n<li><b>Mise <\/b><b>\u00e0<\/b><b> jour du logiciel<br \/>\n<\/b>Le paquetage source contient les instructions de compilation. Le processus utilis\u00e9 pour construire le logiciel peut parfois varier, mais tr\u00e8s souvent il reste le m\u00eame pour toutes les versions du logiciel. Dans ce cas, mettre un paquetage \u00e0 jour vers une nouvelle version est aussi simple que de mettre \u00e0 jour le num\u00e9ro de version dans le paquetage source et de taper la commande pour lancer la compilation du paquetage. Recompiler le logiciel avec une option diff\u00e9rente est aussi quelque chose de facile \u00e0 faire.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid103\" style=\"text-align: justify;\">\n<ul>\n<li><b>Patcher le logiciel<br \/>\n<\/b>Les paquetages sources permettent d&rsquo;inclure des correctifs qui seront appliqu\u00e9s pendant la compilation du paquetage. Cela rend plus facile le suivi des modifications appliqu\u00e9es au logiciel. Lors de la mise \u00e0 jour du logiciel vers une nouvelle version, les m\u00eames modifications sont facilement applicables.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid105\" style=\"text-align: justify;\">\n<ul>\n<li><b>Tenir un journal des modifications<br \/>\n<\/b>Les paquetages contiennent un journal des modifications qu&rsquo;il est possible d&rsquo;utiliser pour expliquer les raisons des modifications, ainsi, tous les membres de l&rsquo;\u00e9quipe savent pourquoi vous avez r\u00e9alis\u00e9 une certaine modification il y a 6 mois. En cas d&rsquo;utilisation d&rsquo;un outil de gestion des versions comme git ou subversion pour g\u00e9rer les paquetages sources (ce qui est recommand\u00e9), il est aussi possible d&rsquo;utiliser le journal de propagation comme journal des modifications.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid107\">\n<ul style=\"text-align: justify;\">\n<li><b>Conna\u00eetre la version install\u00e9e du logiciel, d\u00e9sinstaller ou mettre \u00e0 jour le logiciel<br \/>\n<\/b>Les paquetages permettent le suivi de la version install\u00e9e du logiciel sur le syst\u00e8me. Ils permettent aussi de facilement installer, d\u00e9sinstaller ou mettre \u00e0 jour le logiciel, ou trouver quel paquetage fournit un fichier donn\u00e9.<\/li>\n<\/ul>\n<h2 id=\"magicdomid122\" style=\"text-align: justify;\">Construire des paquetages dans un nouvel environnement et d\u00e9ployer les paquetages<\/h2>\n<h3 id=\"magicdomid123\" style=\"text-align: justify;\">Pourquoi devez-vous utiliser un syst\u00e8me de compilation.<\/h3>\n<p id=\"magicdomid124\" style=\"text-align: justify;\">Le gestionnaire de paquetages est un outil tr\u00e8s int\u00e9ressant pour g\u00e9rer la compilation et l&rsquo;installation du logiciel. Cependant ce n&rsquo;est pas suffisant. Le gestionnaire de paquetages construit le logiciel en utilisant les outils et les biblioth\u00e8ques disponibles sur le syst\u00e8me, apr\u00e8s l&rsquo;installation de la liste des d\u00e9pendances de compilation.<\/p>\n<p id=\"magicdomid125\" style=\"text-align: justify;\">Il y a quelques inconv\u00e9nients \u00e0 proc\u00e9der ainsi :<\/p>\n<div id=\"magicdomid126\" style=\"text-align: justify;\">\n<ul>\n<li><b>Support de multiples distributions<br \/>\n<\/b>Quelquefois, l&rsquo;infrastructure utilise diff\u00e9rentes distributions, ou diff\u00e9rentes \u00e9ditions de la m\u00eame distribution. Un paquetage construit sur une distribution ne fonctionne pas obligatoirement sur une autre car la version de certains composants est diff\u00e9rente ou incompatible. Pour \u00e9viter ce genre de probl\u00e8mes, les paquetages doivent \u00eatre construits en utilisant la m\u00eame distribution que celle sur laquelle ils seront utilis\u00e9s.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid128\" style=\"text-align: justify;\">\n<ul>\n<li><b>Un nouvel environnement de compilation<br \/>\n<\/b>Les paquetages sources comprennent une liste des d\u00e9pendances de compilation qui doivent \u00eatre install\u00e9es pour compiler le paquetage. Cependant lors de la compilation du paquetage sur votre propre machine ou sur un serveur de compilation sp\u00e9cifique, il y a g\u00e9n\u00e9ralement d&rsquo;autres paquetages qui sont d\u00e9j\u00e0 install\u00e9s et qui pourront potentiellement \u00eatre utilis\u00e9s pour la compilation d&rsquo;un paquetage. Il est par cons\u00e9quent tr\u00e8s facile d&rsquo;oublier que ces paquetages ont \u00e9t\u00e9 install\u00e9s, oublier de les inclure parmi les d\u00e9pendances de compilation du paquetage et de ne pas remarquer le probl\u00e8me vu que la compilation fonctionne pour vous. Le syst\u00e8me peut aussi pr\u00e9senter une configuration ou des mises \u00e0 jours personnalis\u00e9es dont vous avez oubli\u00e9 la pr\u00e9sence, qui peuvent aussi influencer la compilation du paquetage. Le probl\u00e8me ne sera pas remarqu\u00e9 tant que quelqu&rsquo;un n&rsquo;aura pas besoin de recompiler le paquetage sur un autre syst\u00e8me. Pour augmenter les chances de pouvoir reproduire une compilation de paquetage dans le future, il faut le faire dans un nouvel environnement. Habituellement cela est assur\u00e9 en cr\u00e9ant, pour chaque compilation de paqutage, un nouveau chroot minimal pour la distribution choisie.<\/li>\n<\/ul>\n<\/div>\n<p id=\"magicdomid130\" style=\"text-align: justify;\">Une fois que votre paquetage est compil\u00e9, il faut le copier sur la machine o\u00f9 il sera install\u00e9. Les distributions fournissent habituellement des outils pour g\u00e9rer cela (apt-get sur Debian, urpmi sur Mageia, yum sur Fedora, etc.). Ces outils t\u00e9l\u00e9chargent et installent automatiquement le paquetage et ses d\u00e9pendances \u00e0 partir d&rsquo;un serveur partageant un d\u00e9p\u00f4t de paquetages. Pour pouvoir utiliser ces outils, il est n\u00e9cessaire de monter un d\u00e9p\u00f4t de paquetages, qui est un r\u00e9pertoire contenant tous les paquetages disponibles et quelques m\u00e9tadonn\u00e9es.<\/p>\n<p id=\"magicdomid150\" style=\"text-align: justify;\">Tout cela peut se g\u00e9rer \u00e0 la main, cependant il est pr\u00e9f\u00e9rable de monter un syst\u00e8me de compilation des paquetages pour g\u00e9rer tout cela automatiquement \u00e0 votre place. Utiliser un syst\u00e8me de compilation des paquetages a de nombreux avantages :<\/p>\n<div id=\"magicdomid151\" style=\"text-align: justify;\">\n<ul>\n<li><b>Moins sujet aux erreurs<br \/>\n<\/b>Compiler les paquetages dans un chroot, copier les fichiers r\u00e9sultants dans le r\u00e9pertoire ad\u00e9quat\u00a0 et r\u00e9g\u00e9n\u00e9rer les m\u00e9tadonn\u00e9es du r\u00e9pertoire n&rsquo;est pas tr\u00e8s difficile, mais c&rsquo;est chronophage et sujet aux erreurs si c&rsquo;est fait \u00e0 la main. Utiliser un\u00a0 syst\u00e8me de compilation des paquetages \u00e9conomise le temps et \u00e9vite bien des erreurs.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid153\" style=\"text-align: justify;\">\n<ul>\n<li><b>Plus facile<br \/>\n<\/b>Si compiler et installer des paquetages dans un r\u00e9pertoire est une t\u00e2che difficile et chronophage, vous-m\u00eame ou d&rsquo;autres membres de votre \u00e9quipe seront tent\u00e9s de l&rsquo;\u00e9viter et d&rsquo;utiliser une autre solution.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid155\" style=\"text-align: justify;\">\n<ul>\n<li><b>Outils de suivi des r\u00e9visions et tra\u00e7abilit\u00e9<br \/>\n<\/b>Utiliser un outil de gestion des versions comme git ou subversion pour g\u00e9rer les modifications du paquetage source est recommand\u00e9. Un SCM attach\u00e9 au syst\u00e8me de compilation garantira que tout paquetage disponible dans le d\u00e9p\u00f4t de paquetages est aussi disponible dans le d\u00e9p\u00f4t de gestion des sources, apportant la tra\u00e7abilit\u00e9 aux paquetages.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid157\" style=\"text-align: justify;\">\n<ul>\n<li><b>Imposer une politique d&#8217;empaquetage<br \/>\n<\/b>Des outils sont disponibles pour imposer une politique d&#8217;empaquetage (rpmlint pour rpm, lintian pour deb). Poss\u00e9der une politique d&#8217;empaquetage est utile pour produire des paquetages coh\u00e9rents. Le syst\u00e8me de compilation des paquetages peut \u00eatre configur\u00e9 pour ex\u00e9cuter automatiquement des tests du respect des r\u00e8gles et refuser un t\u00e9l\u00e9versement des paquetages qui ne respectent pas la politique.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid159\" style=\"text-align: justify;\">\n<ul>\n<li><b>Surveillance<br \/>\n<\/b>Le syst\u00e8me de compilation permet la surveillance des derni\u00e8res compilations. Une interface web fournit un rapport de la derni\u00e8re compilation, les journaux de compilation. Une liste de diffusion peut \u00eatre utilis\u00e9e pour recevoir les notifications de compilation. En cas de travail en \u00e9quipe, elle permet \u00e0 tous les membres de l&rsquo;\u00e9quipe de suivre les derni\u00e8res modifications.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid161\" style=\"text-align: justify;\">\n<ul>\n<li><b>Automatisation<br \/>\n<\/b>Certains paquetages sp\u00e9cifiques peuvent exiger l&rsquo;ex\u00e9cution de t\u00e2ches suppl\u00e9mentaires lors de leurs mise \u00e0 jour. Envoyer un courriel, extraire des fichiers pour mettre \u00e0 jour un site web ou d&rsquo;autres t\u00e2ches peuvent \u00eatre confi\u00e9es \u00e0 un script qui les r\u00e9alisera automatiquement quand ce paquetage sp\u00e9cifique est mis \u00e0 jour. C&rsquo;est la m\u00e9thode utilis\u00e9e pour extraire les fichiers de l&rsquo;installateur de Mageia dans l&rsquo;arborescence du miroir quand un paquetage est mis \u00e0 jour.<\/li>\n<\/ul>\n<\/div>\n<h3 id=\"magicdomid164\" style=\"text-align: justify;\">Comment installer un syst\u00e8me de compilation Mageia ?<\/h3>\n<p id=\"magicdomid165\" style=\"text-align: justify;\">Cela sera le sujet d&rsquo;un autre billet.<\/p>\n<h2 id=\"magicdomid192\" style=\"text-align: justify;\">Configuration des logiciels<\/h2>\n<p id=\"magicdomid193\" style=\"text-align: justify;\">L&rsquo;installation d&rsquo;un logiciel n&rsquo;est habituellement que la premi\u00e8re partie du travail r\u00e9alis\u00e9 par les administrateurs syst\u00e8me. La seconde partie est la configuration du logiciel. Le paquetage assure la premi\u00e8re partie de la configuration initiale, cependant davantage de travail est souvent n\u00e9cessaire.<\/p>\n<p id=\"magicdomid194\" style=\"text-align: justify;\">Il existe plusieurs fa\u00e7ons de proc\u00e9der :<\/p>\n<div id=\"magicdomid195\" style=\"text-align: justify;\">\n<ul>\n<li>\u00c9diter manuellement la configuration directement\u00a0 sur le serveur<\/li>\n<li>\u00c9viter toute configuration manuelle sur un serveur, mais utiliser un outil de gestion de la configuration comme Cfengine, Puppet ou Ansible pour le faire \u00e0 votre place.<\/li>\n<\/ul>\n<\/div>\n<p id=\"magicdomid197\" style=\"text-align: justify;\">En utilisant un outil de gestion de la configuration, celle-ci n&rsquo;est pas r\u00e9alis\u00e9e directement sur les serveurs, mais les r\u00e8gles \u00e9crites dans le d\u00e9p\u00f4t de gestion de la configuration seront appliqu\u00e9es automatiquement par l&rsquo;outil de gestion de la configuration. Cela n&rsquo;est pas aussi rapide qu&rsquo;une \u00e9dition directe sur le serveur, mais il y a de nombreux avantages :<\/p>\n<div id=\"magicdomid198\" style=\"text-align: justify;\">\n<ul>\n<li><b>G\u00e9rez votre infrastructure comme un projet logiciel<br \/>\n<\/b>Les outils de configuration permettent de g\u00e9rer l&rsquo;infrastructure comme n&rsquo;importe quel autre projet de d\u00e9veloppement logiciel ordinaire. Beaucoup d&rsquo;outils \u00e0 disposition des d\u00e9veloppeurs sont utilisables : gestion des versions sources, soumission de correctifs, revue de code, tests automatis\u00e9s, etc.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid200\" style=\"text-align: justify;\">\n<ul>\n<li><b>Travail en \u00e9quipe<br \/>\n<\/b>En cas de travail en \u00e9quipe, vous pouvez enregistrer vos r\u00e8gles de configuration du serveur dans un d\u00e9p\u00f4t commun de gestion des versions sources, rendant possible le suivi et la v\u00e9rification de tous les changements apport\u00e9s aux serveurs par tous les membres de l&rsquo;\u00e9quipe.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid202\" style=\"text-align: justify;\">\n<ul>\n<li><b>Documentation<br \/>\n<\/b>D\u00e9tenir de la documentation au sujet des logiciels install\u00e9s sur les serveurs et comment ils sont configur\u00e9s est tr\u00e8s utile, surtout quand il peut y avoir plusieurs personnes \u00e0 travailler dessus. Cependant, un probl\u00e8me tr\u00e8s fr\u00e9quent avec la documentation est que si quelqu&rsquo;un l&rsquo;a bien \u00e9crite \u00e0 l&rsquo;origine, personne ne la maintien ensuite, causant sa rapide obsolescence. Il est tr\u00e8s facile d&rsquo;effectuer un changement et d&rsquo;oublier de le documenter, ou d&rsquo;oublier qu&rsquo;une documentation existe quelque part et doit \u00eatre mise \u00e0 jour. Poss\u00e9der une documentation pr\u00e9cise est important, et quelquefois, avoir une documentation obsol\u00e8te, fournissant une information erron\u00e9e peut \u00eatre pire que de ne pas avoir de documentation. Le d\u00e9p\u00f4t de gestion de la configuration peut \u00eatre vu comme une sorte de documentation sur l&rsquo;infrastructure, et comme c&rsquo;est ce qui est actuellement utilis\u00e9 pour mettre en place l&rsquo;infrastructure, il est tr\u00e8s probablement plus \u00e0 jour que n&rsquo;importe quelle autre documentation. En d\u00e9veloppement logiciel, avoir du code auto-document\u00e9, ou du code qui peut \u00eatre compris sans documentation est en g\u00e9n\u00e9ral pr\u00e9f\u00e9rable \u00e0 une documentation maintenue s\u00e9par\u00e9ment. Et c&rsquo;est la m\u00eame chose pour l&rsquo;administration syst\u00e8me.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid204\" style=\"text-align: justify;\">\n<ul>\n<li><b>Tests de l&rsquo;environnement et de la reproductibilit\u00e9<br \/>\n<\/b>Utiliser un outil de configuration permet de reproduire facilement la configuration d&rsquo;un serveur sur un autre serveur. C&rsquo;est utile en cas de besoin de remplacer ou d&rsquo;ajouter un serveur, ou encore pour mettre en place un environnement de test.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid206\" style=\"text-align: justify;\">\n<ul>\n<li><b>Maintenir une configuration correcte<br \/>\n<\/b>L&rsquo;outil de gestion de la configuration va s&rsquo;ex\u00e9cuter \u00e0 intervalles r\u00e9guliers pour v\u00e9rifier que la configuration est toujours correcte et n&rsquo;appelle pas de modifications.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid208\" style=\"text-align: justify;\">\n<ul>\n<li><b>R\u00e9utilisation<br \/>\n<\/b>Comme en d\u00e9veloppement logiciel, l&rsquo;utilisation d&rsquo;un outil de gestion de la configuration permet de r\u00e9utiliser les composants que vous avez cr\u00e9\u00e9s. Il est g\u00e9n\u00e9ralement possible de cr\u00e9er des modules dot\u00e9s de param\u00e8tres pour adapter le comportement du module. On peut quelquefois trouver des modules existants sur internet, mais malheureusement, la plupart d&rsquo;entre eux n\u00e9cessiteront d&rsquo;importantes modifications pour les adapter \u00e0 votre besoin. Les premi\u00e8res versions de puppet \u00e9taient d\u00e9pourvues de fonctionnalit\u00e9s importantes telles que la classe param\u00e9tr\u00e9e, aussi la cr\u00e9ation de composants \u00e9tait difficile, mais cela a \u00e9volu\u00e9.<\/li>\n<\/ul>\n<\/div>\n<h3 id=\"magicdomid210\" style=\"text-align: justify;\">Quel outil de gestion de la configuration utiliser ?<\/h3>\n<p id=\"magicdomid211\" style=\"text-align: justify;\">Quand nous avons commenc\u00e9 la mise en place des serveurs de Mageia, au d\u00e9but du projet Mageia, nous avons d\u00e9cid\u00e9 d&rsquo;utiliser <a href=\"http:\/\/puppetlabs.com\/\">puppet<\/a>, apr\u00e8s avoir envisag\u00e9 diff\u00e9rent outils disponibles. Puppet semblait \u00eatre l&rsquo;outil de gestion de la configuration le plus int\u00e9ressant du moment. Depuis ces derni\u00e8res ann\u00e9es, les choses ont beaucoup \u00e9volu\u00e9 dans ce domaine, et il existe d&rsquo;autres alternatives que vous pourriez tester avant de d\u00e9cider laquelle choisir :<\/p>\n<div id=\"magicdomid212\" style=\"text-align: justify;\">\n<ul>\n<li><a href=\"http:\/\/ansible.cc\/\">ansible<\/a><\/li>\n<li><a href=\"http:\/\/saltstack.com\/community\">salt stack<\/a><\/li>\n<\/ul>\n<\/div>\n<h3 id=\"magicdomid214\" style=\"text-align: justify;\">Les modules pour puppet de Mageia<\/h3>\n<p id=\"magicdomid215\" style=\"text-align: justify;\">Les modules pour puppet que nous utilisons pour configurer les serveurs sont disponibles sur un <a href=\"http:\/\/svnweb.mageia.org\/adm\/puppet\/\">d\u00e9p\u00f4t svn<\/a>.<\/p>\n<h2 id=\"magicdomid232\" style=\"text-align: justify;\">Ce qui doit \u00eatre am\u00e9lior\u00e9<\/h2>\n<p id=\"magicdomid233\" style=\"text-align: justify;\">Le processus actuel est bon, mais il reste certaines choses \u00e0 am\u00e9liorer. Si vous d\u00e9sirez contribuer, mais sans savoir ce qui pourrait \u00eatre utile, voici quelques id\u00e9e :<\/p>\n<div id=\"magicdomid234\" style=\"text-align: justify;\">\n<ul>\n<li><b>G\u00e9n\u00e9ration automatique des paquetages<br \/>\n<\/b>Certains langages comme Perl, Python ou Ruby fournissent leur propre syst\u00e8me d&#8217;empaquetage pour les biblioth\u00e8ques. Beaucoup de gens appr\u00e9cient l&rsquo;utilisation de ces paquetages plut\u00f4t que les paquetages RPM car les paquetages de la distribution ne sont pas toujours disponibles ni \u00e0 jour. L&rsquo;avantage des premiers paquetages cit\u00e9s est d&rsquo;\u00eatre construits en amont, donc imm\u00e9diatement disponibles. L&rsquo;inconv\u00e9nient est qu&rsquo;ils ne sont g\u00e9n\u00e9ralement pas bien int\u00e9gr\u00e9s avec le reste du syst\u00e8me et n\u00e9cessite l&rsquo;utilisation de deux syst\u00e8mes diff\u00e9rents d&#8217;empaquetage, ce qui complique les choses. Bien souvent les gens ne sont pas des empaqueteurs exp\u00e9riment\u00e9s, aussi utilisent-ils simplement le paquetage sp\u00e9cifique du langage disponible, car ils pensent que l&#8217;empaquetage est trop difficile ou bien n&rsquo;ont pas le temps de le faire. Si la conversion \u00e0 partir de ces paquetages vers RPM \u00e9tait plus simple, on b\u00e9n\u00e9ficierait d&rsquo;une bonne disponibilit\u00e9 de paquetages bien int\u00e9gr\u00e9s avec le reste du syst\u00e8me. Heureusement, ces paquetages sp\u00e9cifiques du langage contiennent en g\u00e9n\u00e9ral toute l&rsquo;information n\u00e9cessaire \u00e0 l&#8217;empaquetage RPM (descriptions, licence, d\u00e9pendances, etc.), aussi la cr\u00e9ation d&rsquo;un paquetage RPM est souvent une simple conversion de cette information dans le format RPM et peut-\u00eatre automatis\u00e9e. Gr\u00e2ce au travail de <a href=\"http:\/\/jquelin.blogspot.fr\/\">J\u00e9r\u00f4me Quelin<\/a> sur <a href=\"https:\/\/github.com\/jquelin\/cpanplus-dist-mageia\">cpan2dist<\/a>, il est possible de g\u00e9n\u00e9rer des paquetages RPM Mageia automatiquement \u00e0 partir de modules CPAN. C&rsquo;est ce qui nous permet d&rsquo;avoir <a href=\"http:\/\/perl.mageia.org\/stats\/\">3300 paquetages perl<\/a> disponibles dans la distribution.<br \/>\nNous avons besoin d&rsquo;outils similaires pour python, ruby et autres paquetages du langage.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid237\" style=\"text-align: justify;\">\n<ul>\n<li><b>Param\u00e9trage du syst\u00e8me de compilation<br \/>\n<\/b>Nous utilisons un syst\u00e8me de compilation pour compiler nos paquetages car nous avons d\u00e9j\u00e0 un syst\u00e8me de compilation disponible pour compiler la distribution Mageia. Ce n&rsquo;est donc pas beaucoup plus de travail de le configurer pour avoir aussi notre propre d\u00e9p\u00f4t de paquetages. Cependant, l&rsquo;installation d&rsquo;un syst\u00e8me de compilation n&rsquo;est pas actuellement une t\u00e2che facile et ceux qui ne compilent pas une distribution compl\u00e8te ne veulent pas passer trop de temps \u00e0 configurer un syst\u00e8me de compilation. Nous avons donc besoin d&rsquo;am\u00e9liorer le processus de la configuration du syst\u00e8me de compilation pour le simplifier. Ce qui manque actuellement est la documentation pour expliquer comment le faire, en utilisant notre module puppet. Un prochain billet sur ce blog expliquera cela.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid239\" style=\"text-align: justify;\">\n<ul>\n<li><b>Support de OBS<br \/>\n<\/b>Une autre alternative consiste \u00e0 utiliser <a href=\"http:\/\/openbuildservice.org\/\">OBS<\/a> (Open Build Service), qui est un syst\u00e8me de compilation agr\u00e9able avec la prise en charge de multiples distributions. Cependant, il est encore peu adapt\u00e9 pour Mageia. Nous devons r\u00e9gler cela afin qu&rsquo;il devienne possible de g\u00e9rer les d\u00e9p\u00f4ts de Mageia avec OBS.<\/li>\n<\/ul>\n<\/div>\n<div id=\"magicdomid241\">\n<ul>\n<li style=\"text-align: justify;\"><b>Prise en charge de Mageia par Ansible et Salt Stack<br \/>\n<\/b>Ansible et Salt Stack sont tous les deux des outils int\u00e9ressants pour la gestion de la configuration. Cependant ils sont toujours d\u00e9pourvus de la prise en charge d&rsquo;urpmi pour l&rsquo;installation des paquetages. Derni\u00e8re nouvelle : <a href=\"https:\/\/github.com\/pmakowski\">Philippe Makowski<\/a> travaille sur un <a href=\"https:\/\/github.com\/pmakowski\/ansible\/blob\/devel\/library\/packaging\/urpm\">module urpmi pour Ansible<\/a>, mais ce n&rsquo;est toujours pas int\u00e9gr\u00e9 en amont, et les contributions sont bienvenues.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Au sein du projet Mageia, l&rsquo;\u00e9quipe sysadmin (administrateurs syst\u00e8me) est responsable de la mise en place et de la maintenance de toute\u00a0 l&rsquo;infrastructure de Mageia, aussi bien pour les utilisateurs que pour les contributeurs. Pour aider le public \u00e0 comprendre &hellip; <a href=\"https:\/\/blog.mageia.org\/fr\/2013\/06\/06\/ils-font-mageia-lequipe-sysadmin-installation\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":16,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-1335","post","type-post","status-publish","format-standard","hentry","category-non-classe"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p15lfN-lx","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/posts\/1335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/comments?post=1335"}],"version-history":[{"count":5,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/posts\/1335\/revisions"}],"predecessor-version":[{"id":1347,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/posts\/1335\/revisions\/1347"}],"wp:attachment":[{"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/media?parent=1335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/categories?post=1335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mageia.org\/fr\/wp-json\/wp\/v2\/tags?post=1335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}