Estoy intentando escribir el nombre de host del inventario en un archivo remoto para su posterior procesamiento (eventualmente un archivo de datos remoto). El siguiente host tiene el nombre de host físico calvin.mydomain
, sin embargo, el controlador se conecta a él usando el nombre de host de inventario (DNS diferente), calvin.test.mydomain
por lo que no puedo usar las -m setup
variables de hecho que solo recopilan información desde la perspectiva remota (AFAIK).
Pensé que podría hacer esto exportando una variable de entorno al control remoto y luego escribiéndola en un archivo, pero eso solo produce la palabra literal.nombre_host_inventario.
¿Cómo puedo escribir hostvars[inventory_hostname]
o {{inventory_hostname}}
en un archivo /etc/ansible/facts.d/
en el control 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 es mi libro de jugadas
---
- 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
Respuesta1
necesario para usar esto (cambiado a copy
lo 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