Vous êtes ici:

Menu

Importer votre configuration avec un fichier CSV

upgrade-centreon2602015-04-22_09-26-55_PM
Suite à une demande sur le forum Centreon, je vous propose un petit script permettant d'importer en masse vos hôtes avec un fichier CSV. Le prérequis sera un serveur Centreon bien configuré avec des templates d'hôtes. Ce mécanisme permet d'ajouter très facilement un hôte et ses services associés. Pour cet exemple, nous utiliserons un serveur Centreon avec IMP.

Création du fichier CSV


En premier lieu, remplir le CSV sous cette forme
<nom d'hôte>;<désignation de l'hôte>;<IP hôte>;<Templates d'hôte séparés par |>;<Instance>;<hostgroup>;<macro1>;<valeur1>;<macro2>;<valeur2>;<macro3>;<valeur3>

Certaines valeurs sont optionnelles comme le hostgroup et les macros. Voici un exemple de fichier CSV
test1;server test1;172.16.209.5;generic-active-host-custom|OS-Linux-SNMP-custom;Central;linux
test2;server test2;172.16.209.6;generic-active-host-custom|OS-Linux-SNMP-custom|App-DB-MySQL-custom;Central;linux;MYSQLPASSWORD;centreon;MYSQLPORT;3306;MYSQLUSERNAME;centreon
test3;server test3;172.16.209.7;generic-active-host-custom;poller1;linux

Vous remarquerez que nous ne sommes pas obligés de remplir tous les champs macros si nous ne les utilisons pas.

Script d'importation


Voici un script très simple pour importer vos hôtes avec l'API Clapi.
#!/bin/bash
CLAPI=/usr/share/centreon/bin/centreon
INPUT=/root/import.csv
USER=admin
PASS=password
OLDIFS=$IFS
IFS=$';'
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read host lblhost ip template instance hostgroup macro1 valeur1 macro2 valeur2 macro3 valeur3
do
#echo $host
$CLAPI -u $USER -p $PASS -o HOST -a ADD -v "$host;$lblhost;$ip;$template;$instance;$hostgroup"
if [[ ! -z "$macro1" ]]
then
$CLAPI -u $USER -p $PASS -o HOST -a SETMACRO -v "$host;$macro1;$valeur1"
fi
if [[ ! -z "$macro2" ]]
then
$CLAPI -u $USER -p $PASS -o HOST -a SETMACRO -v "$host;$macro2;$valeur2"
fi
if [[ ! -z "$macro3" ]]
then
$CLAPI -u $USER -p $PASS -o HOST -a SETMACRO -v "$host;$macro3;$valeur3"
fi
$CLAPI -u $USER -p $PASS -o HOST -a APPLYTPL -v "$host"
done < $INPUT
IFS=$OLDIFS

On vérifie la validité des valeurs de macro pour éviter des erreurs de commande. Je me suis limité à trois macros mais on peut facilement en rajouter. La dernière commande CLAPI (APPLYTPL) permet d'ajouter les services associés aux templates d'hôtes.

Vérification de la configuration


Après l'importation, nous constaterons l'ajout de nos hôtes dans la configuration.

import_csv1

Les macros personnalisées sont aussi ajoutées

import_csv2

Variantes avec l'utilisation des macros SNMP host_snmp_community et host_snmp_version


Un lecteur m'a fait la remarque qu'il serait judicieux d'ajouter les paramètres SNMP pour chaque hôte nouvellement créé. Ces deux macros se gèrent avec la commande clapi SETPARAM. Il faut donc trouver une autre solution pour le fichier CSV. Voici donc ma solution, il y en a certainement d'autres, je rajoute les valeurs community et valeur avant l'ajout des macros supplémentaires. Ces deux paramètres sont optionnels s'il n'y a pas de macros additionnelles sinon il ne faudra pas oublier de les insérer même si les valeurs sont nulles (ajout de points-virgules seul).

Création du nouveau fichier CSV


Remplir le CSV sous cette forme
<nom d'hôte>;<désignation de l'hôte>;<IP hôte>;<Templates d'hôte séparés par |>;<Instance>;<hostgroup>;<SNMP Community>;<SNMP Version>;<macro1>;<valeur1>;<macro2>;<valeur2>;<macro3>;<valeur3>

Certaines valeurs sont optionnelles comme le hostgroup et les macros. Voici un exemple de fichier CSV
test1;server test1;172.16.209.5;generic-active-host-custom|OS-Linux-SNMP-custom;Central;linux;
test2;server test2;172.16.209.6;generic-active-host-custom|OS-Linux-SNMP-custom|App-DB-MySQL-custom;Central;linux;public;2c;MYSQLPASSWORD;centreon;MYSQLPORT;3306;MYSQLUSERNAME;centreon
test3;server test3;172.16.209.7;generic-active-host-custom;poller1;linux;public;1

Nouveau script d'importation


Voici la modification du script.
#!/bin/bash
CLAPI=/usr/share/centreon/bin/centreon
INPUT=/root/import.csv
OLDIFS=$IFS
IFS=$';'
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read host lblhost ip template instance hostgroup community version macro1 valeur1 macro2 valeur2 macro3 valeur3
do
# add host
$CLAPI -u admin -p password -o HOST -a ADD -v "$host;$lblhost;$ip;$template;$instance;$hostgroup"
# add community and version SNMP if not empty
if [[ ! -z "$community" ]]
then
$CLAPI -u admin -p password -o HOST -a SETPARAM -v "$host;host_snmp_community;$community"
fi
if [[ ! -z "$version" ]]
then
$CLAPI -u admin -p password -o HOST -a SETPARAM -v "$host;host_snmp_version;$version"
fi
# add macro if not empty
if [[ ! -z "$macro1" ]]
then
$CLAPI -u admin -p password -o HOST -a SETMACRO -v "$host;$macro1;$valeur1"
fi
if [[ ! -z "$macro2" ]]
then
$CLAPI -u admin -p password -o HOST -a SETMACRO -v "$host;$macro2;$valeur2"
fi
if [[ ! -z "$macro3" ]]
then
$CLAPI -u admin -p password -o HOST -a SETMACRO -v "$host;$macro3;$valeur3"
fi
#apply template
$CLAPI -u admin -p password -o HOST -a APPLYTPL -v "$host"
done < $INPUT
IFS=$OLDIFS

Deux nouveaux tests ont été rajoutés pour ajouter ou nom les macros host_snmp_community et host_snmp_version.

Il ne restera plus qu'a appliquer la configuration pour ajouter vos nouvelles machines. Winking

blog comments powered by Disqus
 Vous êtes ici: