我正在从事一个只需要收集一个事实的角色。
性能是一个问题,我知道收集事实非常耗时。
我正在寻找某种过滤方式gather_facts
在剧本中,这将使我只收集所需的事实。
使用 setup core 模块可以做到这一点:
ansible -m setup -a 'filter=ansible_hostname' my_host
10.200.0.127 | success >> {
"ansible_facts": {
"ansible_hostname": "my_host"
},
"changed": false
}
可以在剧本中使用此功能吗?像这样的东西?
- hosts: all
sudo: yes
gather_facts: True
filter: "filter=ansible_*"
PS:上面的代码抛出语法异常。
编辑 1 : 如果有人需要获取主机名,还有另一个有用的变量 inventory_hostname .
最佳答案
playbook 顶部的 Ansible 方式(附加方式):
----
- hosts: web
gather_facts: True
gather_subset:
- network
- virtual
调试变量:
- name: Print some debug information
vars:
msg: |
Module Variables ("vars"):
--------------------------------
{{ vars | to_nice_json }}
Environment Variables ("environment"):
--------------------------------
{{ environment | to_nice_json }}
GROUP NAMES Variables ("group_names"):
--------------------------------
{{ group_names | to_nice_json }}
GROUPS Variables ("groups"):
--------------------------------
{{ groups | to_nice_json }}
HOST Variables ("hostvars"):
--------------------------------
{{ hostvars | to_nice_json }}
debug:
msg: "{{ msg.split('\n') }}"
tags: debug_info
关于ansible - 如何在剧本中过滤收集事实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485286/