Together, your Internet even better

vCMDB

vCMDB est un outil open source de gestion de parc matériel informatique/réseau, de configuration et de relation client. La base vCMDB (Configuration Management DataBase) ne dépend pas d'un logiciel particulier et a été configurée pour piloter plusieurs outils internes. Le rôle de vCMDB est de représenter une base de connaissances avec un point d'entrée unique de demande d'information et avec des sorties vers d'autres logiciels internes (ex. CRM, Nagios, Bacula, supervision, configuration des équipements Cisco).
Le logiciel a été développé en PHP/mySQL et il intègre un moteur de recherche qui permet de trouver très rapidement plusieurs types de données (texte, numéros de série, numéros de téléphone et autre).

 

vcmdb

Introduction et philosophie

vCMDB (Vincent Configuration Management DataBase) a été développé au départ pour Rezopole pour centraliser dans une seule base de données l'intégralité du système d'information:

  • Equipements (serveurs, routeurs)
  • Sites et baies
  • Tiroirs optiques et numéro de fibres
  • Adresses IPs et VLAN


On aurait pu partir d'un logiciel déjà existant: GLPI, OCS, Racktables, Centreon…Ce sont de très bons outils, mais souvent très typés IT et ne pouvant stocker toutes les informations que vous souhaitez (essayez de mettre 12 alimentations à votre serveur pour voir si ca marche ^^). Il faut donc des patches/des plugins/synchros pour interconnecter tout ce que vous utilisez. Et fort à parier que vos données sont dupliquées à plusieurs endroits.

On préfère donc partir sur une base type Merise (ou UML) que vous façonnez à votre manière pour qu'elle représente de manière fidèle votre système d'information. Chacun aura le sien, mais vous pourrez créer les connexions que vous voulez. vCMDB, vous permettera de pouvoir extraire les données vers vos applicatifs préférés:

  • Nagios
  • MRTG
  • Cacti
  • dhcpd
  • named
  • bacula
  • dokuwiki
  • vtiger


Et le jour où vous ferez le choix (volontaire ou non) de changer un de ces outils, votre base de données ne changera pas, il faudra juste modifier vos exports.

Très orienté réseau au départ, j'ai voulu dés le départ un outil générique qui puisse être à la fois utilisé par les hébergeurs/FAI mais aussi par n'importe quelle entreprise qui souhaite mieux organiser ses données. Adieu donc le fichier excel et les post-it :)

Après une recherche approfondie des différents CMDB open source existants, la meilleure solution trouvée en 2012 était onecmdb. Le framework java étant très TRES lent, j'ai décidé de redévelopper en partant de zéro en PHP/MySQL.

vCMDB est distribué en Open Source sous la licence Affero GPL

Vidéo

http://www.youtube.com/watch?v=Xsk4qQs2eJo

Prérequis

Pour faire fonctionner vCMDB, il faut:

  • MySQL (InnoDB)
  • libapache2-mod-php5
  • php-fpdf
  • php5

 

Installation

Téléchargements

https://sourceforge.net/projects/vcmdb/

Manuel d'utilisation

Arborescence de fichiers

./triggers
./export
./storage
./scripts
./js
./import
./classes
./view

Triggers

Pour chaque objet, on veut pouvoir exécuter une action lorsque celui ci est ajouté/modifié/supprimé

Pour créer un trigger, il faut créer un fichier:
triggers/.php

Et créer une fonction:
function trigger_($action, $prepost, $id, $fields=null){
global $vcmdb;
global $global_url;
}

On ne charge pas tous les triggers au démarrage pour en pas surcharger le code et le chargement.


La variable prepost peut soit valoir:

*”pre” si on veut exécuter une commande avant l'action *”post” si on veut exécuter une commande après l'action
Vues

Lorsque l'on affiche un objet par exemple voiture, la page d'édition cherche s'il existe une page:

view/voiture.php

Si celle-ci existe, il l'inclut dans le code PHP. On peut donc réaliser diverses opérations sur l'objet ou génération de la configuration. Toutes les variables de configuration sont déjà chargées:

$vcmdb Accès à la classe de gestion de la base de données
$data[] L'objet
$data_references[] Les liaisons 1 vers 1
$data_relations[] Les liaisons 1 vers n

Scripts

Les scripts peuvent se retrouver à 3 endroits différents

pour les scripts d'import de données dans vCMDB, on les placera dans imports
pour les scripts d'export de données ou de génération de configuration, on les placera dans exports
le répertoire scripts est réservé aux taches planifiées, ou aux scripts à lancer à la main avec le binaire PHP

Base de données MySQL

L'outil se veut le plus générique possible et stocke ces données dans une base de données.

Afin que l'on puisse éventuellement intérogger facilement la base de donnée, pour chaque objet, on créé une table. On utilise le modèle Merise 2.


Attention: Il est interdit de créer une table qui s'appelle ANY.

Le caractère '_' et l'espace sont interdit dans les noms des objets (on évitera aussi les accents et apostrophes). Chaque objet est identifié par une table dans la base de données:

objet
objet1_objet2(_description) correspond à une jointure 1 vers 1 entre 2 objets

Voici comment sont décrites les clés en base de données:

id ⇒ clé primaire
id_table(_description) ⇒ clé étrangère vers une table particulière
id_any_description ⇒ clé étrangère vers n'importe quel objet stocké sous la forme table/id

Lorsque l'on créé un objet, les champs suivants sont créés automatiquement:
Attribut    Description
id     clé primaire
name     nom de l'objet
created     date/heure de création
lastModified     date/heure de modification
Tables systèmes
vcmdb-action     La liste des actions possibles sur un objet (utilisée pour la gestion des permissions)
vcmdb-history     L'historique de vos objets
vcmdb-language     La gestion des langues (A FAIRE)
vcmdb-menu     Le menu du haut
vcmdb-menu-url     Les sous menus

Stockage des fichiers

On a la possibilité pour chaque instance d'un objet de lui attacher un ou plusieurs fichiers. On peut ainsi rattacher:

des devis à un matériel
des bons de commandes signés à une société

Le stockage se fait actuellement sur le serveur web, mais le logiciel a été prévu pour pouvoir exporter le stockage en FTP par exemple.
Développement

Pour démarrer son premier script, il est important de bien lire le contenu de classes/vcmdb.inc.php
Cherche un objet

Voici un exemple simple pour démarrer, on affiche toutes les instances d'objet societe

require_once("config.inc.php");
foreach($vcmdb->search("societe") as $societe) {
echo $societe['name'];
}

Simple non ?

On peut aussi rechercher avec des conditions:

require_once("config.inc.php");
foreach($vcmdb->search("societe",Array('name'),'name',Array("name like '%a%'")) as $societe) {
echo $societe['name'];
}

Récupérer les infos d'un objet

require_once("config.inc.php");
$societe = $vcmdb->get("societe",1);
echo $societe['name'];

Récupérer tous les objets liés

Cela permet de récupérer tous les objets qui font références à l'objet en question


require_once("config.inc.php");
$array = $vcmdb->get_related_objects("societe",1);
print_r($array);

Pour en savoir plus :


http://www.edx-net.fr/

alt

FaLang translation system by Faboba