
Ich spiele mit der Idee, ein Playbook zu haben, das eine bestimmte Aufgabe ausführt, wenn sich ein Server in einer Gruppe befindet, und eine andere Aufgabe, wenn er sich nicht in einer Gruppe befindet.
Angenommen, ich habe office1 mit allen Servern und einen primären DHCP-Server:
[office1]
server1
server2
server3
[dhcp]
server2
Ich möchte sicherstellen, dass ich nur einen DHCP-Server habe:
- include: tasks/add-dhcp.yml
when: inventory_hostname in dhcp
- include: tasks/remove-dhcp.yml
when: inventory_hostname not in dhcp
Wenn ich also DHCP auf Server3 ändere, wird es auf 3 installiert und von 2 entfernt. Der Roll wird dann auf allen Office1-Servern ausgeführt, wenn eine neue DHCP-Bereitstellung abgeschlossen ist.
Irgendwelche Ideen dazu? Ist es eine schlechte Idee? Wie würden Sie dieses Problem lösen?
Antwort1
Wenn dieser Ansatz für Sie funktioniert, dann bleiben Sie dabei. Es gibt nichts Gutes oder Schlechtes an der Art und Weise, wie Sie die Konfiguration definieren. Ansonsten können Sie Variablen verwenden.
Der Bedingungssatz sollte jedoch wie folgt aussehen:
- include_tasks: tasks/remove-dhcp.yml
when: `dhcp` not in group_names
group_names
ist einmagische Variablewelches eine Liste aller Gruppen enthält, zu denen das ausführende Ziel gehört.