2016-06-08 24 views
9

Mi sto solo bagnando i piedi con Ansible 2.2 e Debops e ho riscontrato il seguente problema. Ho un host test-host a cui ho distribuito un server MySQL (utilizzando geerlingguy.mysql).Ansible using systemd invece del modulo di servizio

Il ruolo utilizza il seguente gestore per riavviare il servizio:

--- 
- name: restart mysql 
    service: "name={{ mysql_daemon }} state=restarted sleep=5" 

che, ho pensato, usa Ansibles service module per riavviare il server. Tuttavia, questo fallisce:

unsupported parameter for module: sleep 

Quindi, solo per escludere qualsiasi stranezza con quel ruolo personalizzato, ho provato ad eseguire il modulo direttamente in questo modo:

ansible test-host -b -m service -a 'name=mysql sleep=5 state=restarted' 

con lo stesso risultato.

Esecuzione Ansible con spettacoli output più dettagliato (tra le altre cose):

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 

così sembra che il modulo systemd viene usato al posto di service (guardando nel modulo dimostra che è davvero aliased to service). E, ecco, systemd non supporta il parametro sleep.

Come risolvere il problema?

+1

Così nel frattempo ci sono un paio di cose che puoi fare. Il primo è usare l'ultima versione supportata che è 'v2.1.0.0-1'. Il secondo è quello di sollevare un problema su https://github.com/ansible/ansible-modules-core/issues se non esiste già poiché questo è chiaramente un comportamento non previsto. –

+3

Problema creato: https://github.com/ansible/ansible-modules-core/issues/3897 – n3rd

+0

Correlati: se si installa il servizio systemd su un sistema upstart come Ubuntu 14.04, ansible utilizzerà il modulo systemd invece di il modulo di servizio, causando dolore. https://github.com/ansible/ansible/issues/19030 –

risposta

2

È possibile risolvere con l'aggiunta di un altro passo nella vostra playbook come questo:

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

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