Playbook を使用して inventory_hostname をリモートのファイルに記録するにはどうすればよいですか?

Playbook を使用して inventory_hostname をリモートのファイルに記録するにはどうすればよいですか?

後で処理するために、インベントリ ホスト名をリモート ファイル (最終的にはリモート ファクト ファイル) に書き込もうとしています。以下のホストには物理ホスト名がありますcalvin.mydomainが、コントローラはインベントリ ホスト名 (異なる DNS) を使用して接続するcalvin.test.mydomainため、リモートの観点からのみ情報を収集するファクト変数を使用することはできません-m setup(AFAIK)。

環境変数をリモートにエクスポートしてファイルに書き込むことでこれを行うことができると思いましたが、それは文字通りの単語を生成するだけですインベントリホスト名

リモート内のファイルに書き込むに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

関連情報