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