在Ansible临时命令中使用Ansible事实

Mit*_*tch 5 ansible ansible-facts ansible-ad-hoc

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

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

ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"
Run Code Online (Sandbox Code Playgroud)

无需为此编写一本完整的剧本。

小智 6

不,您不能在anscli中提及ans事实。这是因为在运行时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
Run Code Online (Sandbox Code Playgroud)

ansible-playbooksetup隐式运行该模块,因此您将可以访问所有事实作为变量。