首页 > 解决方案 > Ansible 事实 - 如何从事实树中打印特定项目

问题描述

如何使用过滤器获取事实树的特定项目?

我的主机可能有三个或更多分区。

我需要返回具有“mount”的分区的“size_available”属性:“/ pentaho”

我正在尝试使用“设置”模块的“过滤器”参数,但我不确定如何从“ansible_mounts”列表中过滤特定项目“

任何想法?

我编辑了输出以使其不那么冗长

$ ansible -i hosts all -m setup -a 'filter=ansible_mounts'

myserver| SUCCESS => {
    "ansible_facts": {
        "ansible_mounts": [
            {
                "device": "/dev/sda3", 
                 "mount": "/", 
                 "size_available": 38129025024, 
            }, 
            {
                "device": "/dev/sdb1", 
                "mount": "/pentaho", ,
                "size_available": 33617383424,
            }, 
            {
                "device": "/dev/sda1", 
                "mount": "/boot", 
                "size_available": 723005440, 
            }
        ]
    }, 
    "changed": false
}

标签: ansibleansible-facts

解决方案


关于问题“如何从事实树中打印特定项目? ”,“如何从列表中过滤特定项目ansible_mounts? ”,“如何返回size_available具有的分区的属性"mount": "/pentaho" ”,如果事实是收集到您可能可以使用以下方法

- name: Show fact 'size_available' of '"mount": "/pentaho"'
  debug:
    msg:
      - "{{ item.size_available }}"
  when: item.mount == "/penthao"
  with_items:
    - "{{ ansible_mounts }}"

谢谢


推荐阅读