2014-01-17 12 views
6

Stellen wir uns ein Playbook mit folgenden Rollen vor: base, monitoring, nginx und ein anderes playbook mit nur base und nginx.Ansible, Aufgabe ausführen, wenn Playbook die Rolle enthält

Jetzt möchte ich in Überwachungsrolle eine Aufgabe nur ausführen, wenn playbook Nginx Rolle enthält, denn für die Überwachung von Nginx muss ich ein bisschen andere Konfiguration an Überwachungsdienst übergeben.

Wie führe ich eine Aufgabe aus, die von einer anderen Rollenexistenz abhängt?

+1

Antwort nicht direkt auf Ihre Frage, aber als Workaround, vielleicht Überwachung Teil Ihrer _nginx_ Rolle machen? Möchten Sie jemals nicht überwachte Server? – Mxx

+0

Hah, genagelt es :) – nvartolomei

Antwort

2

Während meine Workaround in den Kommentaren für Sie funktioniert haben könnte, ist es immer noch nicht der beste Ansatz. Es ist nicht modular. Zum Beispiel in einer Situation, in der Sie das Überwachungssystem ändern, müssen Sie in jede Rolle gehen und prüfen, ob es eine Überwachungskomponente hat und diese aktualisieren ... Nicht der optimale Weg.

Vielleicht ein besserer Weg wäre, noch eine separate Überwachung Rolle umfassen, aber es bestimmte Aufgaben ausführen playbook conditionals verwenden. Beispiel: nginx Überwachungsaufgabe würde nur ausgeführt when Dieser Server ist Teil Ihrer [Webserver] Gruppe. Oder wenn eine bestimmte Variable auf einen bestimmten Wert gesetzt ist oder eine andere geeignete Bedingung erfüllt ist.

+0

Es wird so ein Durcheinander – nvartolomei

Verwandte Themen