Comment créer un nouveau service système par ansible-playbook
J'ai créé un script pour démarrer/arrêter ma demande. Maintenant, je veux l'ajouter en tant que centos système de service. J'ai d'abord créé un groupe pour créer un lien à partir de mon script /etc/init.d/nom_service comme ci-dessous.
---
- name: create startup link
file: src={{ cooltoo_service_script }} dest={{ cooltoo_service_init }} state=link
Après avoir créer le service, je veux l'ajouter à de service du système. La commande utilisée pour ce faire est "chkconfig --add service_name". Je me demande si il y a un ansible module pour le faire au lieu de figé le commande en ansible-playbook fichier. J'ai regardé cette page http://docs.ansible.com/ansible/service_module.html mais il ne montre que la façon de gérer un service qui n'est pas en créer un nouveau.
source d'informationauteur Zhao Yi
Vous devez vous connecter pour publier un commentaire.
Le "service" module prend en charge et 'activé' argument. Voici un exemple d'une partie d'un playbook, dont je reconnais volontiers ne ressembler à une les débutants attempte
IMPORTANT beaucoup de custom scripts d'initialisation ÉCHOUE avec Ansible et SysV init; la raison étant que le "statut" de l'option (service supervisord état) a besoin d'un retour d'un LSB-conforme code de retour. Sinon, Ansible ne saura pas si un service est en haut ou en bas, et idempotence sera un échec (redémarrage fonctionne toujours parce que c'est inconditionnelle)
Voici une partie d'un script, j'ai juste réécrit pour utiliser le statut de la fonction dans /etc/init.d/fonctions (vous remarquerez le même modèle dans d'autres Red Hat fourni init scripts dans /etc/init.d/
Référence: http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
Ci-dessous l'extrait de code va créer un Service dans CentOS 7.
Code
Tâches
/tâches/main.yml
Modèles
/templates/teamcity.service.j2
\templates\teamcity.env.j2
Des gestionnaires
\gestionnaires\main.yml
Référence :
En effet, le
service
module ne gère déjà enregistré services comme vous l'avez compris. À ma connaissance, il n'existe pas de module pour vous inscrire à un service.Êtes-vous au courant de cette étape peut être sautée avec quelques modifications à votre init.d script? Si le script suit ces règles, vous pouvez utiliser le
service
module pour activer/démarrer le service.Pour RedHat/CentOS 7 (en utilisant systemd/
systemctl
), l'équivalent dechkconfig --add ${SERVICE_NAME}
estsystemctl daemon-reload
[via fedoraproject.org].Puis, à l'aide de la
systemd
module de Ansible 2.2 ou ultérieure, vous pouvez démarrer un service avec un précédentsystemctl daemon-reload
comme [via docs.ansible.com]:Basé sur mon expérience, la
daemon_reload
paramètre peut également être utilisé dans le génériqueservice
module ainsi, bien qu'il n'est pas documenté, et peut échouer sur la non-systemd systèmes: