Archive

Archive for the ‘Sysadmin’ Category

Un SI propre avec iTop, RunDeck, Puppet, FusionInventory

March 23rd, 2011 19 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).

Vidéos du séminaire #2

March 11th, 2011 No comments

Oups, je viens de me rendre rencontre que j’ai oublié de poster le lien des vidéos du deuxième séminaire sysadmin. Un grand merci à _nono_ pour son travail, ainsi que l’IRCAM pour nous avoir prété leur salle.

Categories: Social, Sysadmin Tags:

Programme du séminaire sysadmin #2

January 4th, 2011 No comments

Nous voici début janvier, donc tout d’abord meilleurs vœux à tous !

Pour ceux que ça intéresse, le programme du prochain séminaire sysadmin est disponible. Pour rappel, cet événement aura lieu à Paris les 10 et 11 Février.

Categories: Sysadmin Tags:

Séminaire #2, appel à conférences

October 14th, 2010 1 comment

suite au succès du premier événement sysadmin, nous allons organiser un second événement. L’objectif de celui ci est double :

– Une journée consacrée à l’évolution en performance (comprendre scalabilite) du stockage des données applicatives.

– Une journée de conférénces génériques.

Pour le premier sujet, cela englobe aussi bien tout ce qui est FS distribué (GFS, QFS, Lustre, etc.), réplication SQL, mais aussi tout ce qui est NoSQL, et tout ce que je pourrais oublier qui traite du sujet.

Dans tous les cas :

– La conférénce se tiendra les 10 et 11 Février a l’IRCAM, 1 place Igor-Stravinsky 75004, entrée en bas de la tour en brique rouge à côté du centre pompidou. Il semble vraisembable que la première journée soit celle consacré au thème du stockage

– Une session est composée de ~40 minutes de présentation, ~10 minutes de questions réponses, cependant le conférencier est libre de disposer de son temps dans la mesure de 50mn.

– Le contenu de la présentation (slide) devra être validé par le comité d’organisation.

Je vous serais donc reconnaissant si vous êtes intéressé pour animer une conférence de me répondre par courriel privé. (asyd at asyd dot net)

Merci de votre participation

Categories: Social, Sysadmin Tags:

Séminaire sysadmin 1ère édition, le retour

August 9th, 2010 7 comments


Une partie du public

Une semaine après le premier séminaire sysadmin, je prends un peu de temps pour vous faire un retour. Je pense que l’on peut parler de franc succès (vu que la plupart des gens ont manifestés leur contentement, sauf les râleurs de première, ils se reconnaîtront !). Comme prévu au programme : 3 conférences le matin, 4 l’après midi, plus 3 conférences éclairs (dont une improvisée par notre ami beorn, à qui je tire mon chapeau, car ce n’est pas forcément facile de se lancer sans préparation). Coté public, on compte une trentaine de personnes présentes, ce qui correspond à peu près au doodle.

Puppet

Alban Peignier

Alban Peignier

Alban nous a fait part de ses retours d’expériences sur puppet, en soulignant que ce genre de technos étant relativement jeunes dans le monde sysadmin, il reste difficile de mettre en place une plateforme de tests digne de ce nom.

ZFS

Olivier Delhomme

Olivier Delhomme

Une présentation très intéressante sur le retour d’expérience de ZFS (sur Solaris 10) d’Olivier. Pourquoi il a utilisé ZFS plutôt qu’une solution basée sur Linux, ses choix (judicieux) sur la création du pool et les différentes problématiques qu’il a rencontré (par exemple, l’absence de quota Unix dans les premières versions des zpool). Olivier à même agrémenté sa conférence de quelques vidéos, un vrai plaisir !

Le clustering

Arnaud Gomes-do-Vale

Arnaud Gomes-do-Vale

Voilà un sujet vaste mais abordé avec brio par Arnaud ! En effet, son cas d’utilisation était plutôt inhabituel, puisqu’il a besoin de redondance sur un grand nombre d’applications autonomes, tournant sur un nombre réduit de machines. Il en a donc profité pour parler des solutions pacemaker et corosync, qui je dois l’avouer m’étaient totalement inconnues.

Splunk

Bruno Bonfils

Bruno Bonfils

Étant l’orateur de ce sujet, je me vois mal donner un avis sur ma prestation, qui consistait à une brève présentation de splunk, ainsi que l’utilisation que j’en fais.

Gestionnaire des annuaires via GoSa

Benoit Mortier

Benoit Mortier

En provenance de Bruxelles, Benoit nous a fait une démonstration des différentes fonctionnalités de GoSa, un éditeur d’annuaire orienté métier plutôt que technique, bien que le métier abordé reste quand même de l’informatique pure (mail, déploiement, etc.)

Fusion Inventory

David Durieux

David Durieux

David nous a présenté FusionInventory, le nouvel agent de découverte de parc pour GLPI (résultant d’un fork d’OCS Inventory), qui supporte notamment la découverte SNMP.

iTop

Erwan Taloc

Erwan Taloc

J’avoue que j’avais peur des réactions de certains en invitant Erwan à présenter iTop, un outil que je présenterais comme un générateur de CMDB, son gros atout résidant dans le fait que l’on peut créer son propre modèles de données. En effet, j’avais peur que certains trouvent cette présentation trop loin de la technique, et effectivement certains s’en sont plaints. Cependant, d’autres personnes ont en effet trouvé ça génial, et je sais que Erwan à déjà reçu des demandes d’information, donc au final, je suis content du résultat, et ne regrette en aucun cas mon choix.

Remerciements et conclusion

Quelques minutes de pause entre deux conférences

En premier lieu, je tiens à remercier Olivier Delhomme et l’école des mines pour nous avoir mis à disposition la salle, qui je dois l’avouer était vraiment sympathique. D’autre part, merci à François Bayart pour avoir imprimé et fabriqué les badges, ramener le café et des gâteaux, ça fais tout de suite plus convivial ! Bien entendu un grand merci aux conférenciers, d’une part d’être tous là, et d’autre part d’avoir bien compris l’objectif de la journée. Merci à Fabrice Bacchella pour ses photos.

Au vu de ce que l’on peut nommer un succès, nul doute que cette journée ne sera que la première. La seconde est prévue pour fin janvier, donc si vous avez des idées de sujets, n’hésitez pas à m’en faire part !

Categories: Social, Sysadmin Tags:

ZSH: Create dynamically associatives array in a function

July 14th, 2010 No comments

I’m currently working on some scripts to create CSV files (to import into iTop, I’ll post about it in few weeks) from data received via snmp. To make things propers, I want to reuse my code as far as possible, so I was looking for a way to create some associatives array in a function, where the array name is give as argument.

Thanks to the ZSH IRC channel (special thanks to ft) here a way to achieve that:


mytest() {
typeset -A -g $1
buffer="$1[$2]"
: ${(P)buffer::=$3}
}

so, the following sample code:


mytest() {
typeset -A -g $1
buffer="$1[$2]"
: ${(P)buffer::=$3}
}

mytest toto 3 42
mytest tutu 4 43

print -l $toto[3]
print -l $tutu[4]

will display 42, and then 43!

One final word: zsh is magic.

Categories: Shell, Sysadmin Tags:

Bandwidth monitor: simple but efficient

June 21st, 2010 No comments

Today, I was looking for a small tool to display interface usage on Solaris, I tried first iftop. However, after spent few hours to try to build it (including ncurses, libpcap) I finally got a binary, but it’s not working! After google for few minutes, I found Bandwitdth monitor NG. It’s a very simple software, which uses only few libraries, and works like a charm!

Here a snapshot:

Bandwith Monitor NG screenshot

And for information, ldd output :

% ldd /opt/tools/bwm-ng-0.6/bin/bwm-ng
libcurses.so.1 => /lib/libcurses.so.1
libkstat.so.1 => /lib/libkstat.so.1
libc.so.1 => /lib/libc.so.1
libm.so.2 => /lib/libm.so.2

Categories: OpenSolaris, Solaris Tags:

How to clone search’s dashboard in splunk

June 14th, 2010 No comments

After few weeks trying to persuade my boss to buy Splunk, I start to put it in production. My first goal was to clone the search application’s dashboard using a dedicated index. Indeed, I have few splunks agent reading some tomcat’s logs and forward them to my splunk instance. All these logs are going to a dedicated index, named rtlnet. Our webdeveloppers want to use splunk to see the production’s logs. While it was easy to create the rtlnet index, I wanted to clone the search’s dashboard to give them an overview of logs by application, or by host. However, while it was easy to add index=rtlnet in the metadata search, I was not able to add the index in the search computed when you click on a result (for example the sourcetype).

Here the original code which produce one of the three panel:

      <module name="SearchLinkLister">
        <param name="settingToCreate">list1</param>
        <param name="search">| metadata type=sources</param>
        <param name="searchFieldsToDisplay">
          <list>
            <param name="label">source</param>
            <param name="value">source</param>
          </list>
          <list>
            <param name="label">totalCount</param>
            <param name="labelFormat">number</param>
          </list>
        </param>
        <module name="ConvertToIntention">
          <param name="settingToConvert">list1</param>
          <param name="intention">
            <param name="name">addterm</param>
            <param name="arg">
              <param name="source">$target$</param>
            </param>
          </param>
          <module name="ViewRedirector">
            <param name="viewTarget">flashtimeline</param>
            <param name="uriParam.auto_pause">true</param>
          </module>
        </module>
      </module>

As I said, adding index=rtlnet in the metadata search is trivial. However, when a user click on a result (in that case on a source), the computed search was only source=$target so there was no result, since it the index is not specified. After spending few hours trying to understand how to add the index in the existing intention, I finally understood I need to nest it into a new HiddenIntention. Here the new module definition:

      <module name="SearchLinkLister">
        <param name="settingToCreate">list1</param>
        <param name="search">| metadata type=sources index=rtlnet </param>
        <param name="searchFieldsToDisplay">
          <list>
            <param name="label">source</param>
            <param name="value">source</param>
          </list>
          <list>
            <param name="label">totalCount</param>
            <param name="labelFormat">number</param>
          </list>
        </param>
        <module name="HiddenIntention">
          <param name="intention">
            <param name="name">addterm</param>
            <param name="arg">
              <param name="index">rtlnet</param>
            </param>
          </param>
          <module name="ConvertToIntention">
            <param name="settingToConvert">list1</param>
            <param name="intention">
              <param name="name">addterm</param>
              <param name="arg">
                <param name="source">$target$</param>
              </param>
            </param>
            <module name="ViewRedirector">
              <param name="viewTarget">flashtimeline</param>
              <param name="uriParam.auto_pause">true</param>
            </module>
          </module>
        </module>
      </module>

As you can notice, I embedded the existing ConvertToIntention module in a new HiddenIntention. Cheers!

Categories: Sysadmin Tags:

rsyslog, split file by hostname

June 10th, 2010 1 comment

Here a rsyslog snippet to create a file by day, by device. Indeed, the %now variable take a value like 2010-05-24. Note that HOSTNAME will be replace by the hostname send by the syslog client. If you want to use IP, you can use %fromhost-ip%, and if you want the DNS name resoved by the rsyslog server, use %fromhost%.


$template default,"/data/logs/%HOSTNAME%/%$now%.log"

*.* ?default

Categories: Sysadmin Tags:

Séminaire sysadmin le 2 août

June 4th, 2010 4 comments

Alors que la liste sysadmin@asyd.net va bientôt fêter ses 4 ans d’existence (création le 17 septembre 2006), avec un total de 157 abonnés, nous commençons l’organisation du premier séminaire.

Au programme :

Horaire Titre Intervenant
9h00 → 9h45 Puppet Alban Peigner
10h00 → 10h45 ZFS ce qui nous plait et comment on l’utilise Olivier Delhomme
11h00 → 11h45 Retour d’expérience sur la haute disponibilité Arnaud Gomes Do Vale
14h00 → 14h45 Splunk, use case et retour d’expérience Bruno Bonfils
15h00 → 15h45 Annuaire LDAP et interface de gestions Benoît Mortier
16h00 → 16h45 FusionInventory David Durieux
17h00 → 17h45 iTop Erwan Taloc
18h00 → xxx Confs éclairs NA

Pour les confs éclairs, la liste ne fait que commencer, mais on y trouvera :

  • JRDS, un cacti like en Java
  • PowerDNS

N’hésitez pas à vous manifester pour proposer une conf éclair !

Cet événement prendra place à l’école des mines à Paris, 60 Boulevard Saint Michel. Pour des raisons pratiques d’organisation, les participants sont invités à s’enregistrer.

Categories: Sysadmin Tags: