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 do host físico, calvin.mydomain
porém o controlador se conecta a ele usando o nome do host do inventário (DNS diferente), calvin.test.mydomain
portanto não posso simplesmente usar as -m setup
variáveis de fato que apenas coletam informações da perspectiva do controle remoto (AFAIK).
Eu pensei que poderia fazer isso exportando uma variável de ambiente para o controle remoto e depois gravando-a em um arquivo, mas isso apenas produz a palavra literalinventário_hostname.
Como posso escrever hostvars[inventory_hostname]
em {{inventory_hostname}}
um arquivo /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 é meu manual
---
- 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
Responder1
necessário usar isso (alterado para copy
conforme 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