2016-06-30 7 views
1

Der aktuelle Fall ist dies: Ich habe ein Playbook, das eine Reihe von Servern bereitstellt und Apps auf diesen Servern installiert. Eine dieser Apps hat bereits ein eigenes sprechbares Playbook, das ich verwenden wollte. Jetzt entsteht mein Problem aus diesem Playbook, da es auf hosts: [prod] beschränkt ist und die Host-Gruppen, die ich in der oberen Ebene Playbook habe, sind unterschiedlich.Kann ich erzwingen, dass die aktuelle Host-Gruppe als eine andere in einem Playbook-Include identifiziert wird?

Ich weiß, ich könnte einfach add_host verwenden, um die benötigten Hosts zu einer Gruppe hinzuzufügen, aber das ist eine Lösung, die ich nicht mag.

Meine Frage ist also: Gibt es eine Möglichkeit, die aktuellen Hosts zu einer neuen Host-Gruppe in der Include-Anweisung hinzuzufügen? Etwas wie - include: foo.yml prod={{ ansible_host_group }}

Oder kann ich irgendwie nur die Aufgaben aus einem Playbook enthalten?

+1

Playbook kann mehrere Spiele mit jeweils unterschiedlichen Hosts enthalten, so dass es keine Möglichkeit gibt, das Attribut 'hosts' zu überschreiben, wenn ein Playbook hinzugefügt wird. Und Ihr Beispiel würde nicht funktionieren, nur weil "ansible_host_group" hier nicht definiert ist - Sie können entweder Playbook (wo Hosts noch nicht definiert sind) oder Tasks (wo Hosts bereits behoben sind) einschließen. Verwenden Sie den Eintrag '[prod: children]' in Ihrem Inventar, der Ihre tatsächlichen Gruppennamen enthält, oder rufen Sie die Aufgabe 'group_by: key = prod' für Hosts auf, bevor Sie foo.yml playbook einfügen. –

Antwort

1

Nein, es gibt keine direkte Möglichkeit, dies zu tun.

Nun stellt sich mein Problem aus diesem Textbuch, wie es zu hosts: [prod]

Sie begrenzt ist kann flexibler das Setup-Host über zusätzliche Vars:

- name: add role fail2ban 
    hosts: '{{ target }}' 
    remote_user: root 
    roles: 
    - fail2ban 

Run it:

ansible-playbook testplaybook.yml --extra-vars "target=10.0.190.123" 
ansible-playbook testplaybook.yml --extra-vars "target=webservers" 

Ist diese Problemumgehung geeignet f oder du?

+0

Schade, das ist keine echte Option, da ich das Playbook nicht verändern kann – deiga

+0

Ich akzeptiere das, da es der richtige Weg ist, aber es geht nicht auf mein Problem ein :) – deiga