是否可以在Ansible adhoc命令中使用ansible_facts
中通常包含的内容?
例如,我在所有服务器上都有/tmp/myFile
的文件,我想这样做:
ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"
无需制作完整的剧本。
答案 0 :(得分:4)
不,你不能在ansible cli中提及ansible事实。这是因为当您运行ansible ... -m fetch
时,您无法获得正在运行的主机的事实。使用setup
模块收集事实(您可以通过执行ansible ... -m setup
来尝试。
无论如何,这可以通过像
# file: fetchfile.yml
- hosts: all
tasks:
- fetch: src=/tmp/myFile dest=myFile-{{ inventory_hostname }}
$ ansible-playbook -i [inventory_file] fetchfile.yml
ansible-playbook
隐式运行setup
模块,因此您可以将所有事实作为变量访问。