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?
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. –