Wie kann ich inventory_hostname mithilfe eines Playbooks in einer Datei auf der Remote-Basis protokollieren?

Wie kann ich inventory_hostname mithilfe eines Playbooks in einer Datei auf der Remote-Basis protokollieren?

Ich versuche, den Inventar-Hostnamen zur späteren Verarbeitung in eine Remote-Datei zu schreiben (eventuell eine Remote-Faktendatei). Der unten aufgeführte Host hat den physischen Hostnamen, calvin.mydomainder Controller stellt jedoch über den Inventar-Hostnamen (anderer DNS) eine Verbindung zu ihm her. calvin.test.mydomainDaher kann ich nicht einfach die -m setupFaktenvariablen verwenden, die (soweit ich weiß) nur Informationen aus der Perspektive des Remote-Hosts sammeln.

Ich dachte, ich könnte dies tun, indem ich eine Umgebungsvariable auf die Fernbedienung exportiere und sie dann in eine Datei schreibe, aber das erzeugt nur das wörtliche WortBestands_Hostname.

Wie kann ich in eine Datei im Remote-Bereich schreiben hostvars[inventory_hostname]oder schreiben?{{inventory_hostname}}/etc/ansible/facts.d/

sudo ansible-playbook ./playbooks/hostname.yml -k -u root -i calvin.test.mydomain,
TASK [echo the LAN_HOSTNAME environment var] *******...
changed: [calvin.my.testing.dom]

das ist mein Spielbuch

---
- hosts: all
  tasks:
      - name: "echo the LAN hostname into a file on the remote"
        shell: "echo $LAN_HOSTNAME > /tmp/hostname.ans"
        environment:
            LAN_HOSTNAME: inventory_hostname

Antwort1

musste dies verwenden (geändert copywie von @Michael Hampton vorgeschlagen):

---
- hosts: all
  tasks:
   - name: "Create custom fact directory"
     file:
         path: "/etc/ansible/facts.d"
         state: "directory"

   - name: "Insert custom fact file"
     copy:
         content: "#!/bin/bash\necho {\\\"ansible_LAN_hostname\\\" : \\\"{{ inventory_hostname }}\\\"}"
         dest: /etc/ansible/facts.d/lan_hostname.fact
         owner: root
         group: sysadmin
         mode: 0775

verwandte Informationen