Как записать inventory_hostname в файл на удаленном компьютере с помощью Playbook?

Как записать inventory_hostname в файл на удаленном компьютере с помощью Playbook?

Я пытаюсь записать имя хоста inventory в удаленный файл для последующей обработки (в конечном итоге в удаленный файл фактов). Хост ниже имеет физическое имя хоста, calvin.mydomainоднако контроллер подключается к нему с помощью имени хоста inventory (другой DNS), calvin.test.mydomainпоэтому я не могу просто использовать -m setupпеременные фактов, которые собирают информацию только с точки зрения удаленного (AFAIK).

Я думал, что смогу сделать это, экспортировав переменную среды на удаленный компьютер, а затем записав ее в файл, но это просто выводит буквальное словоinventory_hostname.

Как я могу записать hostvars[inventory_hostname]или {{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]

это мой план действий

---
- 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

решение1

необходимо использовать это (изменено, copyкак предложил @Michael Hampton):

---
- 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

Связанный контент