Wie der Titel sagt, wenn ich in der Lage sein, eine Variable, die unter einer Gruppe von Gastgeber zu einem anderen registriert ist, aber ich bin mir nicht sicher, wie das zu tun, und ich konnte nicht Finden Sie unter der variablen Dokumentation alle relevanten Informationen http://docs.ansible.com/ansible/playbooks_variables.htmlAnsible übergeben Variablen zwischen Host-Kontexten
Dies ist ein vereinfachtes Beispiel für das, was ich versuche zu sehen. Ich habe ein Playbook, das viele verschiedene Gruppen aufruft und prüft, wo ein Symlink hinweist. Ich möchte in der Lage sein, alle Symlink-Ziele am Ende des Spiels zu melden.
Das Problem ist, dass der registrierte Wert nur unter der Hostgruppe gültig ist, in der er definiert wurde. Gibt es eine geeignete Methode, diese Variablen zu exportieren?
---
- hosts: max_logger
tasks:
- shell: ls -la /home/ubuntu/apps/max-logger/active | awk -F':' '{print $NF}'
register: max_logger_old_active
- hosts: max_data
tasks:
- shell: ls -la /home/ubuntu/apps/max-data/active | awk -F':' '{print $NF}'
register: max_data_old_active
- hosts: "localhost"
tasks:
- debug: >
msg="The old max_logger build is {{ max_logger_old_active.stdout }}
The old max_data build is {{ max_data_old_active.stdout }}"
Folgefrage: Gibt es eine einfache Möglichkeit, nur den ersten Host in einer Hostgruppe in diesem Format anzugeben? Ich weiß von diesem Befehl, aber ich weiß nicht, wie das zu einem Befehl passen würde, den Sie vorgeschlagen haben. ansible_play_hosts.index (inventory_hostname) == 0 –
Bitte schauen Sie sich den angehängten Link für andere magische Variablen an. Und mit dem Index '[0]' können Sie auf das erste Element einer Liste zugreifen. – techraf
msg = "Der alte Max_Logger-Build ist {{hostvars [groups ['role_max_logger'] [0]] ['max_logger_old_active'] ['stdout']}} auf dem Host {{groups ['role_max_logger'] [0]}} Was ich letztendlich brauchte, danke für die Hilfe –