在 Ansible ad-hoc 命令中使用 Ansible facts

Use Ansible facts in an Ansible ad-hoc command

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

例如,我在所有服务器上的 /tmp/myFile 都有一个文件,我想执行:

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

无需为它制作一整本剧本。

不,你不能在 ansible cli 中引用 ansible facts。这是因为当您 运行 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 模块,因此您可以访问所有作为变量的事实。