是否可以使用通常包含在ansible_facts
Ansible adhoc 命令中的内容?
例如,我/tmp/myFile
在所有服务器上都有一个文件,我想做:
ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"
无需为此制作完整的剧本。
是否可以使用通常包含在ansible_facts
Ansible adhoc 命令中的内容?
例如,我/tmp/myFile
在所有服务器上都有一个文件,我想做:
ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"
无需为此制作完整的剧本。
不,您不能在 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
模块,因此您可以将所有事实作为变量访问。