2016-06-08 5 views
9

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?

+1

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. –

+3

Problem erstellt: https://github.com/ansible/ansible-modules-core/issues/3897 – n3rd

+0

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 –

Antwort

2

Sie können es umgehen, indem Sie einen weiteren Schritt in Ihrem Textbuch wie folgt ergänzt:

- name: restart mysql 
    service: "name={{ mysql_daemon }} state=restarted" 
    register: mysql_service 

- name: pause after mysql restart 
    pause: "seconds=5" 
    when: mysql_service.changed 
Verwandte Themen