Я пытаюсь записать имя хоста инвентаризации в удаленный файл для последующей обработки (в конечном итоге в удаленный файл фактов). Хост ниже имеет физическое имя хоста calvin.mydomain
однако контроллер подключается к нему, используя имя хоста инвентаризации (другой 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
необходимо использовать это (изменено на 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