Ich bekomme gerade meine Füße nass mit Ansible 2.2 und Debops und ich habe das folgende Problem festgestellt. Ich habe einen Host test-host
, auf dem ich einen MySQL-Server (mit geerlingguy.mysql) bereitgestellt habe.Ansible mit Systemd anstelle des Servicemoduls
Die Rolle verwendet den folgenden Handler den Dienst neu zu starten:
---
- name: restart mysql
service: "name={{ mysql_daemon }} state=restarted sleep=5"
die, wie ich dachte, verwendet Ansibles service module den Server neu zu starten. Doch das scheitert:
unsupported parameter for module: sleep
Also nur mit dieser benutzerdefinierten Rolle jede Seltsamkeit auszuschließen, habe ich versucht, das Modul direkt wie so auszuführen:
ansible test-host -b -m service -a 'name=mysql sleep=5 state=restarted'
mit dem gleichen Ergebnis.
ansible Laufen mit einem ausführlichere Ausgabe zeigt (unter anderem):
Running systemd
Using module file /usr/local/lib/python2.7/site-packages/ansible-2.2.0-py2.7.egg/ansible/modules/core/system/systemd.py
So scheint es, dass das systemd
Modul statt service
verwendet wird (in die Modul Suche zeigt, dass es in der Tat aliased to service
ist). Und, siehe da, systemd
unterstützt den Parameter sleep
nicht.
Wie behebt man das?
So in der Zwischenzeit gibt es ein paar Dinge, die Sie tun können. Die erste besteht darin, die neueste unterstützte Version zu verwenden, die 'v2.1.0.0-1' ist. Die zweite ist, ein Problem auf https://github.com/ansible/ansible-modules-core/issues anzusprechen, wenn es nicht bereits existiert, da dies eindeutig nicht erwartetes Verhalten ist. –
Problem erstellt: https://github.com/ansible/ansible-modules-core/issues/3897 – n3rd
Related: Wenn Sie den Systemd-Dienst auf einem Upstart-basierten System wie Ubuntu 14.04 installieren, verwendet ansible das Systemd-Modul statt das Servicemodul, das Schmerzen verursacht. https://github.com/ansible/ansible/issues/19030 –