2016-12-10 1 views
0

Dies ist ein Teil von einem Ansible Playbook, das ich geschrieben habe.Beim Ausführen eines Ansible-Playbooks auf einer Vagrant-Maschine werden einige wichtige Aufgaben übersprungen, aber warum?

- name: Check OS Version 
    fail: 
    msg: "{{ ansible_distribution }} {{ ansible_distribution_version }} is not compatible with this role" 
    when: ansible_distribution != 'Ubuntu' and ansible_distribution_release != 'trusty' 

ich das Textbuch auf Vagrant Maschine laufe, die ubuntu/treue und doch ist das Textbuch ist die entsprechende Aufgabe überspringen:

# ansible-playbook /tmp/project/deploy/main.yml 
[WARNING]: provided hosts list is empty, only localhost is available 


PLAY [Deploy] ****************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [install-docker : Check OS Version] *************************************** 
skipping: [localhost] 

# lsb_release -a: 
[email protected]:~# lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 14.04.5 LTS 
Release:  14.04 
Codename:  trusty 

Was ist der Grund für den überspringen sein könnte?

Antwort

3

ich das Textbuch auf Vagrant Maschine laufe, die ubuntu/treue und doch ist das Textbuch ist überspringt die entsprechende Aufgabe:

when: ansible_distribution != 'Ubuntu' and ansible_distribution_release != 'trusty' 

Es ist nicht wirklich ein „übersprungen Aufgabe“. Die Aufgabe selbst ausgeführt wird, wird die Bedingung in when ausgewertet und basierend auf diesem Ergebnis: Die Ausführung die angegebene Modul (fail in Ihrem Fall) ist übersprungen.

Das Verhalten scheint perfekt zu Ihrer Absicht zu entsprechen.

Die Task wird nur ausgeführt, wenn die erste Bedingung wahr und die zweite Bedingung wahr ist (Vereinfachung when: true and true).

Da die Maschine ist ubuntu/getreues:

  • ansible_distribution zu Ubuntu gleich ist, so ist die erste Bedingung (!= "ungleich") falsch
  • ansible_distribution_release zu trusty gleich ist, so dass die zweite Bedingung (!= "ungleich") falsch

In diesem Fall sind beide Bedingungen falsch sind (when: false and false), der ganze Ausdruck (when: false) ist auch falsch, so überspringt die Aufgabe.


Wenn Sie die Aufgabe zu scheitern (das ist der Zweck der fail-Modul) auf ubuntu/treuen wollten, müssen Sie den Zustand ändern:

when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty' 
+0

ich es die fortgesetzt werden soll Rest der Aufgaben nur, wenn die Maschine ubuntu trusty ist –

+1

Das ist genau das, was es tut. – techraf

+0

Ok ich werde es bald überprüfen –

Verwandte Themen