Размер захвата с ansible_facts - PullRequest
       29

Размер захвата с ansible_facts

0 голосов
/ 24 февраля 2020

Я бы хотел прокрутить вывод этой переменной ansible_facts, пока не найду значение размера диска C: \ используя ansible выбор атрибута, кто-то может мне помочь?

Кажется, что-то в строка сбрасывается и выдает ошибку в поиске

Выход ansible_fact:

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!"

Примеры

1 Ответ

1 голос
/ 24 февраля 2020

Я не знаю о фильтре 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_fact, чтобы присвоить c_size.0.0 другой переменной.

...