Get the number of the disk offline

167 views
Skip to first unread message

bilel....@gmail.com

unread,
Feb 17, 2023, 4:42:27 PM2/17/23
to Ansible Project

Hello, 


I need to get the number for the disk offline.

My playbook is look like the below but I stuck with the json query and I need you help

Thanks

  tasks:

    - name: Get disk facts
      win_disk_facts:
      delegate_to: "{{inventory_hostname}}"
      register: win_disk_facts
     
    - name: Set the query to get the related part of the win_disk_facts
      set_fact:
        query: "ansible_facts.ansible_disks[*].?operational_status==Offline"

    - name: Get the index number of the disk letter in the disk info
      set_fact:
        index : "{{ loop_index }}"
      loop: "{{ win_disk_facts | json_query(query) }}"
      loop_control:
        index_var: loop_index
        loop_var: inner_item
      when: inner_item | length > 0
           
    - name: Set the backing_uuid
      set_stats:
       data:
          number: "{{ win_disk_facts.ansible_facts.ansible_disks[index].number}}"

Dick Visser

unread,
Feb 17, 2023, 6:09:53 PM2/17/23
to ansible...@googlegroups.com
On Fri, 17 Feb 2023 at 22:42, bilel....@gmail.com <bilel....@gmail.com> wrote:

Hello, 


I need to get the number for the disk offline.

My playbook is look like the below but I stuck with the json query and I need you help


And we need better input from you. 
For example what the win_disk_facts variable looks like, for a start. 
Some additional tips below inline

Thanks

  tasks:

    - name: Get disk facts
      win_disk_facts:
      delegate_to: "{{inventory_hostname}}"

This seems like a redundant entry, by default tasks are run on the target. You can skip that line. 

      register: win_disk_facts
   

According to the docs at  

Facts returned by this module are added/updated in the hostvars host facts and can be referenced by name just like any other host fact. They do not need to be registered in order to use them.

So you can skip the register statement as well. 


    - name: Set the query to get the related part of the win_disk_facts
      set_fact:
        query: "ansible_facts.ansible_disks[*].?operational_status==Offline"

    - name: Get the index number of the disk letter in the disk info
      set_fact:
        index : "{{ loop_index }}"
      loop: "{{ win_disk_facts | json_query(query) }}"
      loop_control:
        index_var: loop_index
        loop_var: inner_item
      when: inner_item | length > 0
           
    - name: Set the backing_uuid
      set_stats:
       data:
          number: "{{ win_disk_facts.ansible_facts.ansible_disks[index].number}}"


--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/46639167-35f3-42cf-ad5a-2a14fcfd892bn%40googlegroups.com.
--
Sent from Gmail Mobile

BILKAM

unread,
Feb 18, 2023, 2:46:31 AM2/18/23
to ansible...@googlegroups.com
Hello, thank you for your support.
I'm sorry if I wasn't clear enough
What I'm trying to do is make a playbook to initiate disk on a windows server.
The first step is to get all information on all the disks and parse the json for offline disks only.
The json for all disks looks like the attached file, and what I like to get with json query is only this based on ("operational_status":"Offline").

  1. {
    • "clustered":false,
    • "friendly_name":"VMware Virtual disk",
    • "number":2,
    • "sector_size":512,
    • "partition_count":0,
    • "unique_id":"6000C29A05421A969E0AF41B32CEF539",
    • "manufacturer":"VMware ",
    • "system_disk":false,
    • "operational_status":"Offline",
    • "firmware_version":"2.0 ",
    • "guid":null,
    • "model":"Virtual disk ",
    • "size":10737418240,
    • "read_only":true,
    • "bus_type":"SAS",
    • "bootable":false,
    • "partition_style":"RAW",
    • "physical_disk":{
      • "manufacturer":"VMware",
      • "operational_status":"OK",
      • "firmware_version":"2.0",
      • "size":10737418240,
      • "partial":false,
      • "object_id":"{1}\\\\Z32-DV-I1-WIN05\\root/Microsoft/Windows/Storage/Providers_v2\\SPACES_PhysicalDisk.ObjectId=\"{71eb514a-8ce5-11ed-8722-806e6f6e6963}:PD:{30478b6d-6b77-59cd-ef21-cb1e9d733a62}\"",
      • "usage_type":"Auto-Select",
      • "media_type":"HDD",
      • "friendly_name":"VMware Virtual disk",
      • "supported_usages":{
        • "value":[
          1. "Auto-Select",
          2. "Manual-Select",
          3. "Hot Spare",
          4. "Retired",
          5. "Journal"
          ]
          ,
        • "Count":5
        },
      • "bus_type":"SAS",
      • "device_id":"2",
      • "can_pool":true,
      • "indication_enabled":null,
      • "unique_id":"6000C29A05421A969E0AF41B32CEF539",
      • "serial_number":"6000c29a05421a969e0af41b32cef539",
      • "allocated_size":2097152,
      • "spindle_speed":"Unknown",
      • "model":"Virtual disk",
      • "physical_location":"SCSI0",
      • "health_status":"Healthy"
      },
    • "serial_number":"6000c29a05421a969e0af41b32cef539",
    • "location":"SCSI0",
    • "path":"\\\\?\\scsi#disk&ven_vmware&prod_virtual_disk#5&1ec51bf7&0&000200#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"
    }
 
This allows me to get the disk number to initiate the disk on the windows server.

Regards 

ALL DISK INFORMATIONS.docx

Dick Visser

unread,
Feb 18, 2023, 9:37:48 AM2/18/23
to ansible...@googlegroups.com
On Sat, 18 Feb 2023 at 08:46, BILKAM <bilel....@gmail.com> wrote:
>
> Hello, thank you for your support.
> I'm sorry if I wasn't clear enough
> What I'm trying to do is make a playbook to initiate disk on a windows server.
> The first step is to get all information on all the disks and parse the json for offline disks only.
> The json for all disks looks like the attached file, and what I like to get with json query is only this based on ("operational_status":"Offline").

I'm not too familiar with the data structure as you posted, but it
looks like there is just one vmware virtual disk (operational status:
offline), which has one physical disk (operational status: OK).
Since you mentioned "disks" (i.e. plural), I would expect a list data
structure - not a single dictionary with a single dict inside it....


>
> {
> To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAHY7qGpDRA5%2B7bmz0yBUtWRNE9x6T9r1o7%3DiLhGMYh3FU%3D2a%3Dw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages