Home > Sysadmin > Un SI propre avec iTop, RunDeck, Puppet, FusionInventory

Un SI propre avec iTop, RunDeck, Puppet, FusionInventory

March 23rd, 2011 Leave a comment Go to comments

Au vu de mes futures (nouvelles ) activités, et parce qu’au XXI ème siècle, on se doit d’avoir un système d’information propre, j’ai commencé une maquette en n’utilisant que des outils libres. Les objectifs sont multiples :

  • l’information ne doit être déclarée qu’à un seul endroit
  • la configuration des serveurs doit être automatisée
  • disposer d’une CMDB
  • automatisé toutes les tâches possibles

Une CMDB, cékoidonc ?

Avant de rentrer dans la technique, je me permet un petit rappel sur la définition d’une CMDB (Configuration Management DataBase), qui est un concept né et normalisé par ITIL. Comme le décrit Wikipedia, une CMDB recense les composants d’un système d’information. Par exemple, la liste des serveurs, mais aussi et surtout la liste des serveurs d’applications, des applications, et de tout autre composant structurant. Une fois renseigné ces différentes briques, il est possible de les regrouper, notamment par solutions applications et par processus métier, et surtout, de lier toutes ces briques. L’objectif ? Définir des relations de dépendance, entre le métier (par exemple “Vendre des articles via mon site d’ecommerce”) et les briques techniques (le serveur “LDAP”). D’une part, renseigner ces informations oblige à documenter ces interactions, et éviter qu’elles ne soient que dans la tête de l’administrateur, mais pour un administrateur, cela permet de répondre à la question fatidique “qu’est ce qui se passe si je change mon serveur LDAP”. Bon nombre d’administrateur vont me dire “mais je sais très bien quelles applications utilisent le LDAP” ou bien encore “c’est dans Puppet, donc j’ai pas à m’en occuper”, je leur répondrais alors “oui, toi tu es conscient de l’impact technique. Si je demande à ta direction s’ils mesurent les impacts business de ta migration, ils vont en penser quoi ?” (Et là, je viens de me faire des ennemis, mais c’est une autre histoire).

Jusqu’il y a encore quelques années, je n’avais trouvé aucun logiciel opensource me permettant de créer cette CMDB. En effet, la plupart des logiciels de ce genre viennent avec un modèle déjà tout prêt. Cependant, nous n’avons pas tous les même besoin, et j’irais presque jusqu’à dire pas tous la même manière de les représenter (même si justement ITIL décrit un modèle de référence). Or, il y a quelques mois de cela, j’ai découvert un nouveau logiciel dans ce monde très spécifique, à savoir iTop. C’est un outil GPL, écrit en PHP, et d’origine française. Ses auteurs sont des anciens de HP, pour qui ils ont déjà travaillés sur ces problématiques. Résultat, bien qu’encore jeune, iTop est un outil formidable, car très simple d’utilisation, mais aussi par sa richesse. En effet, il est relativement aisé de modifier le modèle par défaut (au hasard celui d’ITIL) pour l’adapter à ses besoins. Pour citer un des fondateurs de la société Combodo éditrice de ce logiciel, il est tout à fait possible de schématiser une école maternelle avec ses élèves, ses professeurs, ses salles, etc. C’est typiquement le genre de logiciel que j’affectionne, il répond à un besoin, mais via une approche framework que logiciel rigide.

Exemple d’un processus métier

Voici un exemple du processus métier gérer la configuration. Étant administrateur système mon métier reste technique, chez d’autres sociétés, “Gérer la configuration” sera plutôt une solution applicative qu’un processus métier.

iTop : processus métier

La gestion des jobs

Dans un SI, avec plein de serveurs, il peut être intéressant de pouvoir exécuter des jobs, aussi bien à intervalle régulier, que de manière occasionnelle. Bien entendu, chaque UNIX vient avec un daemon CRON, mais celui-ci est mono serveur, à une syntaxe différente entre les différents UNIX, etc. On pourrait très bien imaginer de gérer les fichiers cron via le logiciel de conformité de configuration, mais cela ne répond qu’au besoin de jobs réguliers. Pour cette brique, je me suis tourné vers RunDeck. Cet outil est un job scheduler en Java, encore une fois un projet relativement jeune, mais qui profite d’une grande expérience puisqu’il est issu des même développeurs que ControlTier, autre outil de job scheduling. Avec quelques lignes de développement PHP, RunDeck utilise iTop pour obtenir la liste des nodes (serveurs), et utilise une notion de tags dans iTop, pour rajouter par exemple le tag puppet que je défini sur les serveurs où l’agent est installé.

La conformité de la configuration

Chers lecteurs, étant donné que vous êtes en grande majorité des administrateurs systèmes, je vais passer outre la description de Puppet. Pour les autres, en quelques mots, c’est un outil qui permet de s’assurer que des classes de serveurs soient configurés de la même manière, par exemple en forçant la présence de tel ou tel package, que le fichier /etc/sshd/sshd_config soit identique, et ce à partir d’un fichier maître, etc. Par défaut, un daemon est présent sur chaque nœud, mais pour ma part j’ai choisi de ne pas l’utiliser, et d’exécuter l’agent via un job RunDeck (avec mon fameux tag). Cela me permet de centraliser via la WebUI de RunDeck la sortie des différentes instances des agents, et également de pouvoir exécuter l’agent avant d’attendre le prochain scheduling

La gestion de l’inventaire

Jusqu’ici, j’ai déclaré mes serveurs (grosso modo nom, adresse IP, informations SSH) dans iTop, mais j’aimerais bien avoir un inventaire plus précis, comme par exemple la liste des packages installés, la quantité de mémoire, etc. Ça tombe bien, il existe un outil performant pour faire l’inventaire d’une machine UNIX, à savoir FusionInventory. Et vous allez me demander, comment intégrer tout ça ? (en fait, je me doute que vous l’aurez déjà deviné). Tout simplement en forçant la présence du paquetage via Puppet, et l’exécution d’un inventaire toujours via Puppet (j’aurais pu également le faire via RunDeck cependant). Ensuite, je collecte le XML que génère FusionInventory, je lui applique quelques XSL, et j’intègre le résultat dans iTop, et tout ça de manière automatique. Voila, la boucle est bouclée.

Pour résumer

Les liens entre les composants

Et demain ?

Et bien, demain, je vais coupler de manière plus forte iTop et puppet. Avec un peu de travail, mais rien de bien compliqué, je vais pouvoir faire en sorte que iTop soit l’origine d’une partie de la configuration, notamment celle métier. L’objectif est par exemple, via iTop, de créer une nouvelle instance Tomcat sur un serveur, et que puppet assure son installation (je le fais déjà, mais via les fichiers de configuration puppet).

  1. JL
    July 3rd, 2011 at 18:24 | #1

    Bonjour,

    J’ai lu attentivement l’article. Merci.

    Me suis posé la question sur comment représenter et stocker l’info dans iTop pour les machines virtuelles (et leur lien avec la machine physique).

    As-tu rencontré cela ? comment as-u fait ?

  2. August 7th, 2011 at 11:29 | #2

    Désolé du retard,

    tout dépend ce que tu veux faire, il est facile de rajouter un attribut pour dire si c’est une machine physique, virtuelle, par contre pour l’instant je n’ai pas encore pris le temps de faire un attribut de la classe Server qui se référence à elle même pour pouvoir faire un lien sur le serveur parent. Qu’est ce que tu veux faire au juste ?

  3. ju
    October 27th, 2011 at 10:09 | #3

    salut,

    je suis en train de tenter de regarder les solutions disponibles pour mettre en place une cmdb.

    J’ai besoin à terme de pouvoir creer un arbre des dépences entre machines/machines et services/services coupler a un inventaire detaillé de chaque elements du SI.

    j’ai lu avec attention ton article car je viens de découvrir itop le gros probleme avec cette solution est le fait de rentrer à la mains les elements.

    tu parle de creer un xsl pour integrer les informations remontées par fusioninventory-agent.
    pourrais tu me donner soit une piste, soit le xsl utiliser, soit un extrait de ce xsl? que je puisse tester cette solution ?

    merci
    bonne continuation pour ton blog

  4. Robert
    December 5th, 2011 at 23:11 | #4

    Hi!

    I am planning on using fusioniventory and iTop in the exact same way.
    And so I have a few questions.

    Are you using fusioninventory-agent in daemon-mode?
    Can you publish the scripts you are using to collect inventory?
    In advance, thanks!

    Best regards,
    Robert

  5. December 6th, 2011 at 09:50 | #5

    @Robert
    Hi Robert,

    I’m not using fusioninventory as daemon indeed, I run it from puppet (but you can have a rundeck job too) and send the XML report to the iTop server where I have some XSLT and scripts to convert the report to CSV and import it to iTop. I’ll try to send you some samples today.

    Thanks for reading my blog even it it’s in french !

  6. ju
    December 7th, 2011 at 09:50 | #6

    @asyd
    salut
    encore moi 🙂
    je suis toujours intéresser pour l’utilisation de fusion-agent dans itop.
    si tu peux m’envoyer aussi un exemple du traitement que tu as développé ce serait avec grand plaisir
    merci.

  7. December 7th, 2011 at 10:52 | #7

    so, @ju @robert, here are samples to convert the fusionInventory report to a CSV and import them to iTop. So you now get the idea!

    Feel free to register on dev.opencsi.com and submit RFE/patchs comments, etc!

  8. fabrice
    December 9th, 2011 at 18:00 | #8

    Bonjour

    Article très intéressant j’ai connu DEVOPS à un JUG à Toulouse et les sujets sont vraiments pertinents. Utilisant déja une usine comprenant entre autre Jenkins, Rundeck et puppet les outils Itop et fusionInventory pourrait l’améliorer. Au niveau intégration est il possible de livrer les scripts pour automatiser les transferts de données entre outils ?

  9. Astrolab
    September 12th, 2012 at 11:45 | #9

    Super article , je cherchais à faire un lien entre cmdb et puppet. J hésitais entre itop et cmdbuild donc pour mon premier test je vais prendre itop.

    Par contre ton lien pour les script semble ne plus fonctionner. Peux tu me les envoyer.

    Merci

  10. September 13th, 2012 at 12:27 | #10

    Bonjour,

    désolé du retard et du lien cassé, tu pourras trouver quelques trucs sur http://wiki.opencsi.com/public/bin/view/SOIF/WebHome

  11. kaba
    August 6th, 2013 at 11:05 | #11

    excellent tuto
    es que tu peux faire un tuto qui parle de l’intégration de rundeck dans pouppet.
    en faite j’ai installer les deux outil et de mettre les coupler. excuter les scripts externe à avec rundeck. mais j’ai trouvé un plugin qui applér puppet-rundeck dans rundeck qui permet de mettre en liaison ces deux outil mais je ne sais pas comment l’utilisation.
    si tu as des doc, idée, ou tu prévois un tuto la dessus je le lirais avec plaisir.
    merci pour le tuto

  12. August 6th, 2013 at 16:20 | #12

    @kaba

    Bonjour kaba, présentement je n’utilise plus vraiment puppet, mais ansible. Concernant puppet-rundeck, pour autant que je me souvienne, ce plugin permet à rundeck d’utiliser la puppetdb (que tu dois donc configurer) pour récupérer l’inventaire (liste des machines + tags)

  13. kaba
    August 8th, 2013 at 11:38 | #13

    merci pour le retour.
    Je vais configurer puppetdb alors.

  14. November 26th, 2013 at 15:29 | #14

    pourquoi pas utiliser puppet-hiera qui est deja integré avec puppet, plutôt que iTop?

  15. Madara
    April 30th, 2014 at 11:14 | #15

    Bonjour,

    Merci pour ce tuto.

    Pourrais-tu expliquer d’avantages STP la démarche pour l’intégration des résultats collectés par fusioninventory avec iTOP?

    Merci de ton aide.

  16. July 22nd, 2014 at 11:45 | #16

    Bonjour,

    je vais refaire des articles plus clair et plus à jour d’ici peu, stay tune!

    Merci de ton commentaire

  17. enzowin
    September 5th, 2014 at 13:56 | #17

    Bonjour
    j’ai installé Itop sur un serveur mais voila petite question:
    Est-ce possible d’avoir juste la gestion des changements ou les trois processus sont obligatoirement installé?
    Merci pour ta réponse

  18. uchiha
    October 18th, 2014 at 09:11 | #18

    Bonjour,

    Merci pour ce tuto fort interessant. le lien de la config itop avec fusioninventory ne fonctionne plus, pourrais-tu mettre a notre disposition un nouveau lien STP?
    Merci beaucoup et bonne continuation

  19. Sophie
    March 23rd, 2015 at 11:41 | #19

    Bonjour,

    Les scripts mis sur le wiki ne sont plus disponibles.
    Est-ce qu’il serait possible d’avoir des exemples de scripts d’intégration des xml fusioninventory dans itop ?

    D’avance merci

    Sophie

  1. October 24th, 2012 at 17:03 | #1
  2. April 28th, 2013 at 08:54 | #2