Как получить максимальное значение из обьекта клю:значение?

Тривиальная задача - найти диск с максимальным размером из имеющихся в системе.

- name: "data_node | get disk sizes"
  set_fact:
    disk_with_size: >-
      {{ disk_with_size
      | default({})
      | combine({disk.key: disk.value.size|human_to_bytes}) }}
    size_with_disk: >-
      {{ size_with_disk
      | default({})
      | combine({disk.value.size|human_to_bytes: disk.key}) }}
  loop: "{{ lookup('dict', current.disks) }}"
  loop_control:
    loop_var: "disk"

- name: "data_node | get max disk size"
  set_fact:
    disk_max_size: >-
      {{ disk_with_size
      | dict2items
      | json_query('[].value')|max }}

- name: "data_node | get data disk name"
  set_fact:
    data_disk_name: "{{ size_with_disk["{{ disk_max_size }}"] }}"

- block:
    - debug:
        msg:
          - "this is a data node {{ ansible_hostname }} {{ disk_with_size }}"
          - "max disk size {{ disk_max_size }}"
          - "{{ size_with_disk }}"
          - "disk to partition {{ data_disk_name }}"
ok: [data-node] => {
    "msg": [
        "this is a data node esc-data-node-00000B {'sda': 32212254720, 'sdb': 34359738368, 'sdc': 2199023255552, 'sr0': 643072}",
        "max disk size 2199023255552",
        {
            "643072": "sr0",
            "32212254720": "sda",
            "34359738368": "sdb",
            "2199023255552": "sdc"
        }
    ]
}

Как из объекта

{'sda': 32212254720, 'sdb': 34359738368, 'sdc': 2199023255552, 'sr0': 643072}

получить ключ с максимальным размером из всех ('sdc': 2199023255552)?

Или есть другой вменяемый способ получить диск с максимальным размером.

Ansible 2.10+

UP 20210111T212500+0000

Нашел ответ, который не работает

- name: "data_node | get data disk name"
  set_fact:
    data_disk_name: >-
      {{ disk_with_size
      | dict2items
      | max(attribute='value') }}

Ссылки


Ответы (1 шт):

Автор решения: Hellseher

{{ t | json_query('max_by(@, &a)') }}"

→ Ссылка