Cette page a pour but d'expliquer comment développer FAN pour ses propres besoins ou pour une personne voulant devenir contributeur au projet. Nous allons aborder essentiellement le packaging RPM et comment créer son propre ISO de FAN. Tout d'abord, il faudra avoir un environnement de développement : une distribution Linux utilisant de préférence le système de paquet RPM et installer les librairies de développement.

Choix et installation du système

FAN étant basé sur une CentOS, le mieux serait d'utiliser cette même distribution pour notre environnement. On pourrait aussi utiliser Fedora, Mandriva ou autre… mais il n'est pas sûr que tout fonctionnera sans problème lors des phases de compilation. Pour ma part, j'ai choisi d'utiliser FAN car elle s'installe rapidement et on peut tester les paquets compilés directement sur celle-ci. Comme CentOS n'est pas ma distribution préférée _o< j'ai choisi de virtualiser mon environnement avec VirtualBox. Une fois votre environnement installé, nous allons installer les outils qui vont vous permettre de faire du packaging RPM.

L'environnement de dev

Pour le packaging RPM

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

EPEL (Extra Packages for Enterprise Linux) basé sur la communauté Fedora, il permet d'ajouter des dépôts de paquets (yum) qui viennent compléter ceux de la CentOS et qui ont l'avantage d'être compatibles. Celui qui va nous intéresser est rpmdevtools.

# yum install rpmdevtools

En tant que simple utilisateur, lancer

$ rpmdev-setuptree

Cela aura pour effet de créer une arborescence de build à l'intérieur de votre répertoire personnel.

$ ls
rpmbuild/BUILD  rpmbuild/RPMS  rpmbuild/SOURCES  rpmbuild/SPECS  rpmbuild/SRPMS

Les librairies de développement

Sur le dépôt de FAN, il existe un méta paquet RPM qui en l'installant vous installe toutes les librairies de développement nécessaire à la compilation des paquets principaux de FAN. Créer le fichier /etc/yum.repos.d/FAN.repo

[FAN]
name=FAN - Base
baseurl=http://cedrictemple.net/FAN/repository/fanprod/
gpgcheck=1
gpgkey=http://cedrictemple.net/FAN/repository/fanprod/RPM-GPG-KEY-FAN-1

lancez ensuite

# yum update
# yum install fan-dev

Pour la création des ISO

Pour créer les fichiers ISO de FAN, il faut aussi d'installer les paquets suivants

# yum install createrepo mkisofs

Récupération des sources et des données

Le dépôt Subversion

Dans le répertoire rpmbuild qui est à la racine de votre répertoire personnel. Nous allons supprimer les répertoires SPECS et SOURCES, pour utiliser ceux provenant du dépôt subversion de FAN

$ rm -fr rpmbuild/BUILD rpmbuild/SOURCES
$ cd rpmbuild
$ svn checkout https://fannagioscd.svn.sourceforge.net/svnroot/fannagioscd/branches/fannagioscd-1.0/SPECS
$ svn checkout https://fannagioscd.svn.sourceforge.net/svnroot/fannagioscd/branches/fannagioscd-1.0/SOURCES

Les deux dernières commandes sont des exemples, ici nous récupérons les répertoires provenant de la branche fannagioscd-1.0. Mais on pourrait aussi utiliser ceux du trunk ou des tags. Plus bas, je vous expliquerai comment est organisé le svn.

Les données de l'ISO

A l'heure où j'écris cette page, la dernière version de FAN est la 1.0. Imaginons que nous voulions la refaire en apportant d'autres fonctionnalités. Il faut d'abord récupérer l'ISO sur l'un des mirroirs.

$ wget http://lkco.gezen.fr/FAN/FAN-1.0.iso

Toutes les données de l'image, il faudra la recopier dans un répertoire qui nous servira de “build”

# mount -o loop FAN-1.0.iso /media/cdrom
$ cp -r /media/cdrom ~/fan-build
# umount /media/cdrom

En faisant un petit tour dans le répertoire, nous avons :

$ cd ~/fan-build
$ ls
CentOS                 RELEASE-NOTES-de.html  RELEASE-NOTES-nl.html
EULA                   RELEASE-NOTES-en       RELEASE-NOTES-pt_BR
GPL                    RELEASE-NOTES-en.html  RELEASE-NOTES-pt_BR.html
images                 RELEASE-NOTES-es       RELEASE-NOTES-ro
isolinux               RELEASE-NOTES-es.html  RELEASE-NOTES-ro.html
ks.cfg                 RELEASE-NOTES-fr       repodata
NOTES                  RELEASE-NOTES-fr.html  RPM-GPG-KEY-beta
RELEASE-NOTES-cs       RELEASE-NOTES-ja       RPM-GPG-KEY-CentOS-5
RELEASE-NOTES-cs.html  RELEASE-NOTES-ja.html  TRANS.TBL
RELEASE-NOTES-de       RELEASE-NOTES-nl

Dans le répertoire CentOS, nous y retrouvons tous les paquets RPM qui seront installés.

Exemple avec le paquet Centreon

J'ai choisi cet exemple car une personne a posté une demande sur le forum de FAN. Elle demandait s'il était possible de sauvegarder la configuration de FAN et de la déployer sur d'autres machines. La réponse est “non” car ce n'est pas une fonctionnalité qui a été envisagée (pour le moment) par les développeurs. Mais toutefois, il est possible d'installer FAN avec une base Centreon modifiée qui permettra ainsi, de déployer rapidement la configuration de Nagios. C'est peut être cette fonctionnalité que recherchait la personne. Cependant, si la configuration Nagios fait appel à des plugins qui ne sont pas présents dans FAN à la base, il faudra les recopier ou créer un nouveau package pour les installer.

Créer toujours une copie des fichiers que vous modifiez en cas de fausse manipulation

Positionnons-nous dans :

$ cd ~/rpmbuild
$ cat SPECS/centreon.spec
[..]
Patch0: centreon-db.patch
[..]

Le patch centreon-db.patch se trouvant dans SOURCES permet la création des fichiers nommés “centreon.sql” et “centreon_cds.sql” qui seront utilisés lors de la création de la base de données Centreon. Si on souhaite modifier la base de Centreon, il suffit donc de modifier ce patch. Voici comment on procède, on va supposer que vous avez les dumps de Centreon, les nouveaux fichiers “centreon.sql” et “centreon_cds.sql” ce que nous appellerons “centreon-new.sql” et “centreon_cds-new.sql”

$ cd SOURCES
$ tar xzf centreon-1.4.2.6.tar.gz
$ cp -r centreon-1.4.2.6 centreon-1.4.2.6.ori
$ cd centreon-1.4.2.6
$ patch -p1 < ../centreon-db.patch
patching file centreon_cds.sql
patching file centreon.sql
patching file ODS/ods

On recopie ensuite les nouveaux fichiers

$ cp lechemin/centreon-new.sql centreon.sql
$ cp lechemin/centreon_cds-new.sql centreon_cds.sql
$ cd ../
$ ls
centreon-1.4.2.6 centreon-1.4.2.6.ori

Pour créer un nouveau patch centreon-db.patch, on lance la commande

$ diff -Naurd centreon-1.4.2.6.ori centreon-1.4.2.6 > centreon-db.patch

Le packaging : Avant toute phase de packaging, il convient de modifier le fichier .spec en incrémentant le numéro de release (par ex fan.15) et de mettre un commentaire sur les modifications apportées dans le changelog (à la fin du fichier)

$ cd ~/rpmbuild
$ rpmbuild -ba SPECS/centreon.spec

Si tout se passe bien le fichier RPM est créé dans le dossier RPMS

$ ls RPMS/noarch/
centreon-1.4.2.6-fan.15.noarch.rpm

Pour la création d'une nouvelle image, il faut d'abord copier la nouvelle version du paquet RPM de centreon et supprimer l'ancienne version du paquet

$ rm ~/fan-build/CentOS/centreon-1.4.2.6-fan.14.noarch.rpm
$ cp RPMS/noarch/centreon-1.4.2.6-fan.15.noarch.rpm ~/fan-build/CentOS/
$ cd ~/fan-build/
$ createrepo -g repodata/comps.xml .
$ mkisofs -R -J -T -no-emul-boot -boot-load-size 4 -boot-info-table -V "FAN.1.0-test1" -A "Created on 2008/09/18" -P "FANFoundry" -p "FANfoundry" -b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" -o /tmp/FAN.1.0-test1.iso .

Attention : il y a un point ”.” à la fin des 2 dernières commandes.

Les 2 dernières commandes auront pour effet de remettre à jours la liste des paquets à installer et la création de l'image FAN.1.0-test1.iso dans /tmp. Voilà il ne reste plus qu'à tester que l'installation fonctionne correctement.

Création d'un nouveau paquet

Pour la création d'un nouveau paquet, lancer

$ rpmdev-newspec monpaquet

Il faut ensuite écrire le fichier .spec de “monpaquet”. Il existe de très bons tutoriaux sur la toile qui vous expliqueront en détails les règles à respecter pour faire un paquet RPM, dont les docs sur Fedora.

Comme dans le paragraphe précédent, il faudra mettre le rpm du paquet dans le CentOS du “fan-build” et modifier le fichier ks.cfg en rajoutant dans la section %packages le nom du nouveau paquet. Pour finir, lancer les 2 commandes pour créér une nouvelle image ISO

$ cd ~/fan-build/
$ createrepo -g repodata/comps.xml .
$ mkisofs -R -J -T -no-emul-boot -boot-load-size 4 -boot-info-table -V "FAN.1.0-test1" -A "Created on 2008/09/18" -P "FANFoundry" -p "FANfoundry" -b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" -o /tmp/FAN.1.0-test1.iso .

Organisation du Subversion

Dans le dépôt https://fannagioscd.svn.sourceforge.net/svnroot/fannagioscd, il y a le trunk, les branches et les tags.

  • Le trunk : c'est le tronc du dépôt qui est pour le moment, destiné dans la version 2.0 de FAN qui contiendra l'intégration de Nagios 3 et Centreon 2.
  • Les branches : contiennent les développements pour la sortie de FAN 0.X à 1.X. Elles sont les plus actives car nous corrigeons et intégrerons les nouvelles versions de FAN.
  • tags : c'est des copies d'une branche lors d'une annonce officielle d'une nouvelle version. Ils sont destinés à ne jamais être modifiés.

Conclusion

Cette documentation vous donne un avant-goût dans la manière de créer ou modifier les paquets RPM puis de l'intégrer dans FAN. Toutefois, pour utiliser bien cette documentation il faut avoir un minimum de pré-requis dans le packaging, le script shell et surtout la supervision. Cela vous permettra de mieux comprendre, la manière qui a été employée pour packager tous les outils dont je ne présente pas car ça sera trop long pour l'expliquer. J'entends par là, les paquets tels que Nagios, Nareto, Ndo et tous les patches qui ont été créés afin de pouvoir intégrer tous ces outils dans un milieu homogène et fonctionnel. Cette documentation s'appuie sur un certain nombre de référence que voici :

supervision/guide_du_developpeur_fan.txt · Dernière modification: 2017/07/07 14:42 (modification externe)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0