在Ansible ad-hoc命令中使用Ansible事实

时间:2016-04-07 19:02:42

标签: ansible ansible-facts ansible-ad-hoc

是否可以在Ansible adhoc命令中使用ansible_facts中通常包含的内容?

例如,我在所有服务器上都有/tmp/myFile的文件,我想这样做:

ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"

无需制作完整的剧本。

1 个答案:

答案 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模块,因此您可以将所有事实作为变量访问。