2016-08-01 30 views
1

Ich hoffe, Sie können herausfinden, warum mein Playbook nicht wie erwartet abgeschlossen wird.Ansible Multi-Play-Playbook ignorieren ignoriert

ENVIRONMENT

  • OSX El Capitan
  • ansible 2.1.0.0

CONFIGURATION

Nichts Aufregendes:

[defaults] 
roles_path=./roles 
host_key_checking = False 
ssh_args= -t -t 
allow_world_readable_tmpfiles = True 

PLAYBOOK

Ich habe ein einigermaßen kompliziertes Setup mit einer Anzahl von Spielen in einem Spielbuch.

Das Playbook wird gegen verschiedene Zielsysteme ausgeführt; die Produktionsstätte und ein Dev-Rig. (Bitte schlagen nicht ich sie kombinieren ... es ist ein IoT-System und komplex genug, wie es ist.)

meine hier etwas geschwärzt Textbuch:

- hosts: all 
    roles: 
    - ... 

- hosts: xmpp_server 
    roles: 
    - ... 

- hosts: audit_server 
    roles: 
    - ... 

- hosts: elk_server 
    roles: 
    - ... 

- hosts: all 
    roles: 
    - ... 

Nun denken Sie bitte daran, dass ich ein IoT-Setup mit verschiedenen Redundanzen, Replikation und Verteilung läuft, obwohl es andere Möglichkeiten gibt, die Katze zu enthäuten, ist die obige Zerlegung in mehrere Spiele wirklich ordentlich für meine Einrichtung und ich würde es gerne behalten.

Auch wichtig: Ich habe keine audit_server oder elk_server Hosts auf meinem dev rig. Diese Gruppen sind derzeit leer, da ich an einem orthogonalen Problem arbeite und keine begrenzten Dev-Ressourcen benötige. Ich habe diese in der Produktion, nur nicht in der Entwicklung.

erwartetes Verhalten

Auf der Produktionsstätte ich all die Stücke erwarten auslösen und ausführen.

Auf dem Entwickler-Rig erwarte ich, dass das erste Spiel (all) und das xmpp_server Spiel zu laufen, die audit_server und elk_server spielt danach laufen zu überspringen und die letzte (all) spielen.

tatsächliches Verhalten

Der Produktionsstandort funktioniert genau wie erwartet. Alle Spiele laufen.

Das dev Rig vervollständigt die xmpp_server spielen als dev-piA ist ein Mitglied der xmpp_server Gruppe. Und dann hört es still auf. Kein Fehler, keine Information, nichts. Einfach direkt zur Play Recap. Hier ist die Ausgabe:

... 

TASK [xmppserver : include] **************************************************** 
included: /Users/al/Studio/Projects/smc/ansible/roles/xmppserver/tasks/./openfire.yml for dev-piA 

TASK [xmppserver : Get openfire deb file] ************************************** 
ok: [dev-piA] 

TASK [xmppserver : Install openfire deb file] ********************************** 
ok: [dev-piA] 

TASK [xmppserver : Check if schema has been uploaded previously] *************** 
ok: [dev-piA] 

TASK [xmppserver : Install openfire schema to postgres db] ********************* 
skipping: [dev-piA] 
    to retry, use: --limit @fel.retry 

PLAY RECAP ********************************************************************* 
dev-vagrant1    : ok=0 changed=0 unreachable=1 failed=0 
dev-piA     : ok=106 changed=3 unreachable=0 failed=0 
dev-piB     : ok=77 changed=3 unreachable=0 failed=0 
dev-piC     : ok=77 changed=3 unreachable=0 failed=0 
... 

Also, ich lief es mit -vvvvv und bekam nichts mehr nützlich:

...

TASK [xmppserver : Install openfire schema to postgres db] ********************* 
task path: /Users/al/Studio/Projects/smc/ansible/roles/xmppserver/tasks/openfire.yml:14 
skipping: [dev-piA] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true} 
    to retry, use: --limit @fel.retry 

PLAY RECAP ********************************************************************* 
dev-vagrant1    : ok=0 changed=0 unreachable=1 failed=0 
dev-piA     : ok=106 changed=2 unreachable=0 failed=0 
dev-piB     : ok=77 changed=3 unreachable=0 failed=0 
dev-piC     : ok=77 changed=3 unreachable=0 failed=0 
... 

HELP

ERFORDERLICH

Also, meine Frage ist: warum das Textbuch nur dort stoppen? Was ist los?!

Es wird nicht explizit gesagt, dass für das audit_server play keine weiteren Hosts übrig sind; Das ist meine beste Schätzung. Es hört einfach auf, als würde es ein EOF treffen.

Ich bin völlig ratlos.

Edit: NB: Die Wiederholungsdatei enthält nur einen Verweis auf die vagabundierende Maschine, die gerade ausgeschaltet ist. Aber wenn die Existenz das Problem ist, dann ist die Logik von Ansible sehr fehlerhaft. Ich überprüfe jetzt nur für den Fall sowieso

Edit: OMFG es ist eigentlich die fehlende Vagabund-Box, die nichts mit einer gottverdammten Sache zu tun hat. Das ist schockierend und ich werde es als ein Problem mit Ansible aufwerfen. Aber ... Ich werde das hier lassen, für den Fall, dass jemand das gleiche Problem hat und es googelt.

Edit: Zur Verdeutlichung, die Vagrant-Maschine ist nicht in den Host-Listen für alle Spiele, mit Ausnahme der speziellen 'alle' Fall.

Antwort

0

ansible Volk bekam zu mir zurück und bestätigte, dass sie auf einer Reihe von Fragen in diesem Bereich würden für die 2.1.1 Release arbeiten.

Ich aktualisiert auf 2.1.1.0 und es hat gut funktioniert.

0

Ansible bricht die Ausführung ab, wenn jeder Host im Spiel ungesund ist.
Wenn dev-vagrant1 das einzige Mitglied der audit_server Gruppe ist, ist dies das erwartete Verhalten (wie wir sehen dev-vagrant1 ist als unreachable markiert).

Dennoch sollte es eine Linie PLAY [audit_server] ******** kurz vor to retry, use...

+0

Die Vagrant-Maschine ist kein Mitglied der Host-Liste für irgendwelche der Spiele, außer natürlich "alle". Diese Erklärung gilt leider nicht für mein Setup. –

+0

Aber Sie haben Recht, darauf hinzuweisen, dass es trotzdem eine informative Zeile über die ignorierten Spiele geben sollte. Das ist es, was es für mich wie einen Käfer riechen lässt. –