用ansible_事实捕获大小

2024-09-28 03:14:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想滚动这个ansible_facts变量的输出,直到找到磁盘大小值C:\使用ansible属性选择,有人能帮我吗

似乎字符串中的某些内容正在转义并在搜索中生成错误

退出ansible\u事实:

ok: [192.168.56.103] => {
    "ansible_facts.disks": [
        {
            "bootable": true,
            "bus_type": "SATA",
            "clustered": false,
            "firmware_version": "1.0",
            "friendly_name": "VBOX HARDDISK",
            "guid": null,
            "location": "Integrated : Adapter 0 : Port 0",
            "manufacturer": null,
            "model": "VBOX HARDDISK",
            "number": 0,
            "operational_status": "Online",
            "partition_count": 2,
            "partition_style": "MBR",
            "partitions": [
                {
                    "access_paths": [
                        "C:\\",
                        "\\\\?\\Volume{e98535da-0000-0000-0000-501f00000000}\\"
                    ],
                    "active": false,
                    "drive_letter": "C",
                    "guid": null,
                    "hidden": false,
                    "mbr_type": 7,
                    "number": 2,
                    "offset": 525336576,
                    "shadow_copy": false,
                    "size": 53160706048,
                    "transition_state": 1,
                    "type": "IFS"
        }
    ]
}

我的尝试

test : '{{ ansible_facts.disks | selectattr("partitions.drive_letter", "search", "^C$")| map(attribute="size") | list }}'

输出

"VARIABLE IS NOT DEFINED!"

Examples


Tags: falsenumbersizetypedriveansiblenullguid
1条回答
网友
1楼 · 发布于 2024-09-28 03:14:39

我不知道selectattr过滤器,但我使用json_query管理它:

  - set_fact:
      c_size: "{{ ansible_facts.disks | json_query( partition_query ) }}"
    vars:
      partition_query: "[*].partitions[?drive_letter=='C'].size"

  - debug:
      var: c_size

  - debug:
      msg: "{{ c_size }}"

给出此输出:

TASK [debug] *************************************************************
ok: [192.168.124.8] => 
  c_size:
  - - 53160706048

TASK [debug] *************************************************************
ok: [192.168.124.8] => 
  msg: ':[[53160706048]]:'

看起来在原始列表中仍然有几个级别,但它在那里。您可以通过使用c_size[0][0]c_size.0.0来消除这种情况。当然,您可以使用另一个set_factc_size.0.0赋值给另一个变量

相关问题 更多 >

    热门问题