Hello Hagai,

This got me going. Thank you.

Is there a way to match a given model (given that I set the 'Model' var earlier in the playbook)? I need the firmware and that works perfectly but, I need to limit the firmware that goes to a certain model of server.

Thanks,
Hank

Something like:

- debug: var=Model

- debug: msg={{ item.key }}
  when: item.key == 'idrac'
  with_recursive:
   - { name: dict, args: firmware, "{{ Model }}" }
   - { name: dict, args: "{{item.value}}" }

Here is the output of the above:

TASK: [idrac-firmware | debug var=Model] **************************************
ok: [<some server>] => {
    "var": {
        "Model": "PowerEdge_R730xd"
    }
}

TASK: [idrac-firmware | debug msg={{ item.key }}] ***************************** skipping: [<some server>] => (item={'key': 'bios', 'value': {'url': 'http://downloads.dell.com/FOLDER02797483M/1/BIOS_CNN4X_WN64_2.5.2.EXE', 'search': 'none', 'target_version': '2.5.2', 'minimum_version': 'none', 'filename': 'BIOS_CNN4X_WN64_2.5.2.EXE'}}) skipping: [<some server>] => (item={'key': 'os_collector', 'value': {'url': 'http://downloads.dell.com/FOLDER02775623M/1/Diagnostics_Application_5W2KP_WN64_OSC_1.1_X10-00.EXE', 'search': 'none', 'target_version': 1.1000000000000001, 'minimum_version': 'none', 'filename': 'Diagnostics_Application_5W2KP_WN64_OSC_1.1_X10-00.EXE'}}) skipping: [<some server>] => (item={'key': 'bios', 'value': {'url': 'http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE', 'search': 'none', 'target_version': '1.2.10', 'minimum_version': 'none', 'filename': 'BIOS_XR23Y_WN64_1.2.10.EXE'}}) ok: [<some server>] => (item={'key': 'idrac', 'value': {'url': 'http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE', 'search': 'none', 'target_version': '2.10.10.10', 'minimum_version': 'none', 'filename': 'iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE'}}) => {
    "item": {
        "key": "idrac",
        "value": {
"filename": "iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE",
            "minimum_version": "none",
            "search": "none",
            "target_version": "2.10.10.10",
"url": "http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE";
        }
    },
    "msg": "idrac"
}
skipping: [<some server>] => (item={'key': 'bios', 'value': {'url': 'http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE', 'search': 'none', 'target_version': '1.2.10', 'minimum_version': 'none', 'filename': 'BIOS_XR23Y_WN64_1.2.10.EXE'}}) ok: [<some server>] => (item={'key': 'idrac', 'value': {'url': 'http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE', 'search': 'none', 'target_version': '2.10.10.10', 'minimum_version': 'none', 'filename': 'iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE'}}) => {
    "item": {
        "key": "idrac",
        "value": {
"filename": "iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE",
            "minimum_version": "none",
            "search": "none",
            "target_version": "2.10.10.10",
"url": "http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE";
        }
    },
    "msg": "idrac"
}



On 6/27/15 7:56 AM, Hagai Kariti wrote:
You can write a small filter plugin that gives you the items of dicts (something that simply returns an `item.values()` or something like that). Then you could do:

vars:
# Will create a list of inner dict values inside a list of parent dict's values - firmware_items: "{{ firmware.values() | map('get_dict_values') | list }}"
tasks:
   - debug: var=item.url
     with_flattened: firmware_items


Alternatively, I wrote a lookup plugin that allows you do chain lookups and make them iterate on each other. Then you can do this:

tasks:
   - debug: item.values.url
     with_recursive:
       - { name: dict, args: firmware }
       - { name: dict, args: "{{item.values}}" }

Lookup plugin is here: https://gist.github.com/hkariti/d07695b4b9c5a68d8c02


On Wednesday, June 24, 2015 at 10:37:52 PM UTC+3, Hank Beatty wrote:

    Hello,

    Given the data below I would like to create a single task that will
    print the url or the filename without having to specify the hardware
    (PowerEdge_xxxxx) or the firmware (bios, idrac, etc.).

    Any ideas would be very much appreciated.

    Thanks,
    Hank

    Something like:

       - name: Print firmfware info
         debug: msg="item0 {{ item.0 }} item1 {{ item.1.url }}"
         with_indexed_items: "{{firmware}}"

    OR:

       - name: Print firmfware info
         debug: msg="item0 {{ item.0 }} item1 {{ item.1.url }}"
         with_dict: "{{firmware}}"



    ---
    firmware:
       PowerEdge_730xd:
         bios:
           type: bios
           url:
    http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE
    <http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE>

           filename: BIOS_XR23Y_WN64_1.2.10.EXE
           target_version: 1.2.10
           search: none
           minimum_version: none
         idrac:
           type: idrac
           url:
    
http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE
    
<http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE>

           filename:
    iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE

           target_version: 2.10.10.10
           search: none
           minimum_version: none
         raid:
           type: raid
           url:
    
http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
    
<http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE>

           filename: SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
           target_version: 25.2.2-0004
           search: none
           minimum_version: none
         nic_intel1:
           type: nic
           url:
    
http://downloads.dell.com/FOLDER02309982M/1/Network_Firmware_M26VT_WN64_15.5.0_A00.EXE
    
<http://downloads.dell.com/FOLDER02309982M/1/Network_Firmware_M26VT_WN64_15.5.0_A00.EXE>

           filename: Network_Firmware_M26VT_WN64_15.5.0_A00.EXE
           target_version: 15.5.0
           search: X520
           minimum_version: none
         nic_intel2:
           type: nic
           url:
    
http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
    
<http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE>

           filename: Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
           target_version: 16.5.20
           search: X520
           minimum_version: 15.5.0
       PowerEdge_720xd:
         bios:
           type: bios
           url:
    http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE
    <http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE>

           filename: BIOS_MKCTM_WN64_2.5.2.EXE
           target_version: 2.5.2
           search: none
           minimum_version: none
         nic:
           type: nic
           url:
    
http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
    
<http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE>

           filename: Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
           target_version: 16.5.20
           search: X520
           minimum_version: 15.5.0
       PowerEdge_620xd:
         bios:
           type: bios
           url:
    http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE
    <http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE>

           filename: BIOS_MKCTM_WN64_2.5.2.EXE
           target_version: 2.5.2
           search: none
           minimum_version: none
         raid:
           type: raid
           url:
    
http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
    
<http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE>

           filename: SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
           target_version: 25.2.2-0004
           search: none
           minimum_version: none

--
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 [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/1fd734c7-7252-4b0f-b974-8cf6ad69f790%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/1fd734c7-7252-4b0f-b974-8cf6ad69f790%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/55B22989.5030600%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to