我正在尝试将库存主机名写入远程文件以供稍后处理(最终是远程事实文件)。下面的主机有物理主机名,calvin.mydomain
但控制器使用库存主机名(不同的 DNS)连接到它,calvin.test.mydomain
所以我不能只使用-m setup
仅从远程角度收集信息的事实变量(据我所知)。
我以为我可以通过将环境变量导出到远程,然后将其写入文件来实现这一点,但这只会产生文字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
答案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