2016-03-25 3 views
1

Ich möchte Fakten des Remote-Host in Var und dann iterieren über die Variable in der nächsten Aufgabe. aber ich bin bei der ersten Aufgabe der Registrierung von Fakten mit Hostname [Hostname: IP] fest. mein Code finden:Wie registriert man die Fakten des entfernten Hosts mit Ansible?

- name: get facts 
    setup: 
    delegate_to: "{{item}}" 
    delegate_facts: True 
    with_items: "{{ groups['hadoop'] }}" 
    register: hadoop_ips 
    tags: 
    - etc-hosts 

- debug: msg={{ hadoop_ips }} 
    tags: 
    - etc-hosts 
+0

Was genau ist der Fehler, den Sie bekommen? – helloV

Antwort

3

Wenn Sie ansible Fakten über einen Host holen wollen, sollten Sie hostvars verwenden, um sie zugreifen, nachdem auf den Hosts gesammelt Tatsachen haben.

Wenn Ihr Playbook bereits Fakten für die Hosts gesammelt hat, die Sie interessieren oder fact caching verwenden und der Cache die Fakten über die Hosts enthält, können Sie einfach hostvars direkt verwenden. Wenn nicht, dann müssen Sie eine delegierte setup Aufgabe verwenden, die Sie in Ihrer Frage haben.

Also, wenn Sie die Standard-IP-Adressen für einige Hosts in einer anderen Gruppe nicht gezielt durch Ihr aktuelles Textbuch holen wollen könnten Sie so etwas wie diese:

- name: get facts 
    setup: 
    delegate_to: "{{item}}" 
    delegate_facts: True 
    with_items: "{{ groups['hadoop'] }}" 
    tags: 
    - etc-hosts 

- debug: var={{ hostvars[item]['ansible_eth0']['ipv4']['address'] }} 
    with_items: "{{ groups['hadoop'] }}" 
    tags: 
    - etc-hosts 
+0

Ich habe die von Ihnen empfohlenen Änderungen versucht, aber dieser Fehler ist fehlgeschlagen! => {"failed": true, "msg": "'dict object' hat kein Attribut 'ansible_eth0'"}. Ich sehe ansible_eth0 in ansible Setup https://gist.github.com/anonymous/ce3fdc54650c8e91c5a0 – roy