Vous êtes ici:

Menu

Adaptation du service centcore à systemd

debian
La nouvelle version de Debian Jessie amène son lot de nouveautés. Et parmi celles-ci, l'intégration de systemd à la place d'init SysV. Ce changement a fait couler beaucoup d'encre sur la toile et à même provoqué un fork de Debian. Le but de cet article n'est pas de vous dire si cette décision est justifiée ou non. Nous allons voir si nous pouvons adapter les scripts init de Centreon pour ce nouveau mécanisme de service. Comme je travaille sur le packaging de Centreon sur Debian, il est judicieux que je m'attarde sur cette technique. J'attire votre attention sur le fait que cette configuration n'est pas validée par l'équipe de Centreon et ne peut être tenue responsable des éventuelles. dysfonctionnements Winking

Le service centcore


Le choix s'est porté sur centcore. Ce service est utilisé sur un serveur standalone Centreon, par exemple. Si vous installez ce service sur Debian Jessie avec l'installation de Centreon, celui-ci sera de type init SysV. Le script sera copié dans /etc/init.d, Debian Jessie assurant la compatibilité avec init SysV, votre service sera complètement fonctionnel. En voici la preuve :
systemctl status centcore
● centcore.service - LSB: Start daemon centcore at boot
Loaded: loaded (/etc/init.d/centcore)
Active: active (running) since ven. 2015-06-19 07:43:35 CEST; 54s ago
Process: 1344 ExecStart=/etc/init.d/centcore start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/centcore.service
└─1368 /usr/bin/perl /usr/share/centreon/bin/centcore --logfile=/var/log/centreon/centcore.log --severity=debug --config=/etc/centreon/conf….

Maintenant que nous avons vu que notre service fonctionnait sous Jessie, nous allons nous intéresser à la migration sous systemd.

Désactivation du service


Commençons par arrêter le service et le désactiver.
service centcore stop
update-rc.d centcore remove

Cela ne suffit pas, comme nous avons la compatibilité avec systemd, supprimons le fichier /etc/init.d/centcore. Il ne faut pas oublier les changements à systemd.
rm /etc/init.d/centcore
systemctl daemon-reload

Création du service centcore


Il nous reste à créer le service centcore dans le dossier /lib/systemd/system. Nous le nommerons centcore.service. Voici le contenu de ce fichier.
[Unit]
Description=Enable service provided CentCore : Manage pollers
After=syslog.target network.target
ConditionPathExists=/usr/share/centreon/bin/centcore

[Service]
Type=simple
PIDFile=/var/run/centreon/centcore.pid
EnvironmentFile=/etc/default/centcore
User=centreon
ExecStart=/usr/share/centreon/bin/centcore $OPTIONS
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Comme vous le constatez, j'ai repris le fichier de configuration /etc/default/centcore grâce à la variable EnvironmentFile. Il reste à faire prendre en compte ce service à systemd et le rendre automatique au démarrage.
systemctl daemon-reload
systemctl enable centcore.service

La dernière commande renvoie le résultat suivant.
Created symlink from /etc/systemd/system/multi-user.target.wants/centcore.service to /lib/systemd/system/centcore.service.

Finalisation


Terminons par la vérification du fonctionnement du service. Tout d'abord, on démarre le service.
systemctl start centcore.service

Puis on vérifie si celui-ci est démarré.
/lib/systemd/system# systemctl status centcore.service
● centcore.service - Enable service provided CentCore : Manage pollers
Loaded: loaded (/lib/systemd/system/centcore.service; enabled)
Active: active (running) since ven. 2015-06-19 11:54:39 CEST; 1min 20s ago
Main PID: 5479 (centcore)
CGroup: /system.slice/centcore.service
└─5479 /usr/bin/perl /usr/share/centreon/bin/centcore --logfile=/var/log/centreon/centcore.log --severity=debug --config=/etc/centreon/conf….

Il sera intéressant de redémarrer le serveur et de vérifier le bon fonctionnement de centcore. On peut vérifier le fonctionnement des services.
systemctl list-units --type=service

Cette commande vous affiche la liste des services dont voici un extrait :
UNIT                                                              LOAD   ACTIVE SUB     DESCRIPTION
acpid.service loaded active running ACPI event daemon
apache2.service loaded active running LSB: Apache2 web server
atd.service loaded active running Deferred execution scheduler
cbd.service loaded active running LSB: Start daemon cbd at boot
centcore.service loaded active running Enable service provided CentCore : Manage pollers
centengine.service loaded active running LSB: Start and stop Centreon Engine
centreontrapd.service loaded active running LSB: Start daemon centreontrapd at boot
centstorage.service loaded active exited LSB: Start daemon centstorage at boot
console-setup.service loaded active exited LSB: Set console font and keymap
…………..

On peut déterminer si le service est configuré avec init SysV avec le message suivant :<loaded active exited LSB:>

Il reste à trouver la bonne configuration pour les autres services de Centreon, suite au prochain épisode Happy
blog comments powered by Disqus
 Vous êtes ici: