Es gibt 3 Hosts in meinem Spiel.Ansible zielspezifischen Host (nicht delegate_to)
[Maschinen]
- MachineA
- RechnerB
- MachineC
MongoDB auf diesen Servern läuft. Und einer dieser Server kann eine MasterDB von Mongo sein.
So kann jede dieser Maschinen ein "Master" sein. Dies wird erreicht, indem die Tatsache bestimmt, ob die Maschine Master ist, in diesem Beispiel nur MachineA ausgerichtet ist:
- name: check if master
shell: 'shell command to check if master'
set_fact: MasterHost="machineA"
when: 'shell command to check if master'.stdout == "true"
Dies gilt auch für RechnerB und MachineC erfolgt.
Mission zu erreichen: Befehle nur auf dem Master-Rechner ausführen, der die Tatsache "MasterHost" hat. Ich versuchte, das delegate_to Modul, aber delegate_to verwendet auch die beiden anderen Maschinen:
- name: some task
copy: src=/tmp/test.txt dest=/tmp/test.txt
delegate_to: "{{ MasterHost }}"
Ich möchte den Meister es in meinem Textbuch zum Ziel und nur Befehle auf dem Master, nicht in der Schale über die --limit laufen Möglichkeit.
'shell' und' set_fact' sind Module, daher enthält Ihre erste Aufgabe einen Syntaxfehler. Ihr zweiter Aufgabenzweck ist völlig unklar. Es scheint, als ob Sie nicht mehr als 'when: master.stdout ==" true "brauchen, aber wenn Sie nicht angeben, was Sie wollen, ist es ein Ratespiel. – techraf
Es war ein grundlegendes Beispiel, Syntaxfehler beiseite. Ich möchte Befehle auf dem MasterHost ausführen und die anderen Hosts in der Wiedergabe ausschließen. – Kevin