Adaptation du service centcore à systemd
19/06/15 07:24 Classé dans: Techniques
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
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 :
Maintenant que nous avons vu que notre service fonctionnait sous Jessie, nous allons nous intéresser à la migration sous systemd.
Commençons par arrêter le service et le désactiver.
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.
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.
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.
La dernière commande renvoie le résultat suivant.
Terminons par la vérification du fonctionnement du service. Tout d'abord, on démarre le service.
Puis on vérifie si celui-ci est démarré.
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.
Cette commande vous affiche la liste des services dont voici un extrait :
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
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
blog comments powered by Disqus