ansible - 如何在剧本中过滤收集事实?

标签 ansible ansible-facts

我正在从事一个只需要收集一个事实的角色。

性能是一个问题,我知道收集事实非常耗时。

我正在寻找某种过滤方式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/

相关文章:

ansible - 从hosts文件中获取主机名

任务的 Ansible 条件处理程序?

ubuntu - Windows 主机的 Ansible-expect 模块

python - Ansible 字典/哈希键作为特殊变量

python - 想要隐藏 "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" } from ping module output?

ansible - 如何从 Ansible playbook 获取文件?

jinja2 - 检查变量是否在 Ansible 字典中的列表中

Ansible vars_prompt 角色

amazon-web-services - 具有两个角色的剧本 : running role B complains with role A's code which successfully ran