5

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

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

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

无需为此制作完整的剧本。

4

1 回答 1

6

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

于 2016-04-08T07:27:18.073 回答