Como posso registrar o inventory_hostname em um arquivo no controle remoto usando um Playbook?

1

Estou tentando gravar o nome do host do inventário em um arquivo remoto para processamento posterior (eventualmente, um arquivo de fatos remoto). O host abaixo tem o nome de host físico calvin.mydomain , mas o controlador se conecta a ele usando o nome de host do inventário (DNS diferente) calvin.test.mydomain , portanto, não posso usar apenas as variáveis de dados -m setup que apenas coletam informações da perspectiva do remoto (AFAIK).

Pensei que poderia fazer isso exportando uma variável de ambiente para o remoto e, em seguida, gravando-o em um arquivo, mas isso apenas produz a palavra literal inventory_hostname .

Como posso escrever hostvars[inventory_hostname] ou {{inventory_hostname}} em um arquivo em /etc/ansible/facts.d/ no controle remoto?

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]

este é o meu manual de jogo

---
- 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
    
por Server Fault 13.03.2018 / 15:51

1 resposta

1

necessário para usar isso (alterado para copy como sugerido por @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
    
por 13.03.2018 / 18:04