If you are defining aggregates (vs getting from some other task register var),
there is another way you could construct your aggregates var.
aggregates:
- { cluster: "Cluster 1", aggregate: "aggr1" }
- { cluster: "Cluster 1", aggregate: "aggr2" }
- { cluster: "Cluster 1", aggregate: "aggr4" }
- { cluster: "Cluster 2", aggregate: "aggr1" }
- { cluster: "Cluster 3", aggregate: "aggr2" }
This syntax makes it really easy to add more items and maintain proper syntax.
Your item.0 changes to item.cluster, and your item.1 change to item.aggregate.
- name: Get info
na_ontap_rest_info:
<<: *login
gather_subset:
- storage/volumes
parameters:
aggregates.name: "{{ item.cluster }}"
hostname: "{{ item.aggregate }}"
use_python_keys: true
register: vol_data
loop: "{{ aggregates }}"
no_log: false
- debug: var=vol_data
This might be more description and easier for someone else to make the
connection between your aggregates var and your loop references. The aggregates
var is still a list. It is a list of JSON dictionary items.
---
- name: test loop with JSON dict list
hosts: all
become: false
gather_facts: false
vars:
aggregates:
- { cluster: "Cluster 1", aggregate: "aggr1" }
- { cluster: "Cluster 1", aggregate: "aggr2" }
- { cluster: "Cluster 1", aggregate: "aggr4" }
- { cluster: "Cluster 2", aggregate: "aggr1" }
- { cluster: "Cluster 3", aggregate: "aggr2" }
tasks:
- name: show reference
debug: msg="cluster {{ item.cluster }}, hostname {{ item.aggregate }}"
loop: "{{ aggregates }}"
% ansible-playbook -i localhost, netapp.yml
PLAY [test loop with JSON dict list]
***********************************************************************************
TASK [show reference]
**************************************************************************************************
ok: [localhost] => (item={'cluster': 'Cluster 1', 'aggregate': 'aggr1'}) => {
"msg": "cluster Cluster 1, hostname aggr1"
}
ok: [localhost] => (item={'cluster': 'Cluster 1', 'aggregate': 'aggr2'}) => {
"msg": "cluster Cluster 1, hostname aggr2"
}
ok: [localhost] => (item={'cluster': 'Cluster 1', 'aggregate': 'aggr4'}) => {
"msg": "cluster Cluster 1, hostname aggr4"
}
ok: [localhost] => (item={'cluster': 'Cluster 2', 'aggregate': 'aggr1'}) => {
"msg": "cluster Cluster 2, hostname aggr1"
}
ok: [localhost] => (item={'cluster': 'Cluster 3', 'aggregate': 'aggr2'}) => {
"msg": "cluster Cluster 3, hostname aggr2"
}
PLAY RECAP
*************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0
Just another idea ...
Walter
--
Walter Rowe, Division Chief
Infrastructure Services, OISM
Mobile: 202.355.4123
On Mar 6, 2023, at 8:24 AM, Aharonu <[email protected]> wrote:
Yes, I got it what I was looking for.
Thank you very much for your help Todd and Walter.
On Mon, 6 Mar 2023, 18:25 'Rowe, Walter P. (Fed)' via Ansible Project,
<[email protected]<mailto:[email protected]>>
wrote:
Your 'aggregates' is a list of lists. For each aggregate list item, you have a
two-element list where element [0] is cluster name and element [1] is aggregate
name.
Loop through aggregates, and use item.0 for cluster and item.1 for hostname ?
- name: Get info
na_ontap_rest_info:
<<: *login
gather_subset:
- storage/volumes
parameters:
aggregates.name<https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Faggregates.name%2F&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=jXuSN20x%2FZ2lXD9%2B0L7j3p6rofDjnjl7ZyEA4duifRM%3D&reserved=0>:
"{{ item.1 }}"
hostname: "{{ item.0 }}"
use_python_keys: true
register: vol_data
loop: "{{ aggregates }}"
loop_control:
label: "{{ ?? }}"
no_log: false
- debug: var=vol_data
Walter
--
Walter Rowe, Division Chief
Infrastructure Services, OISM
Mobile: 202.355.4123
On Mar 4, 2023, at 7:27 AM, Aharonu
<[email protected]<mailto:[email protected]>> wrote:
Hi Team,
Greetings for the day!
I have a variables called 'aggregates' under vars which ontaints
cluster1,cluster3,cluster2..etc and aggr1,aggr2,aggr3..etc list as mentioned
below.
{
"aggregates": [
[
"Cluster1",
"aggr1"
],
[
"Cluster1",
"aggr2"
],
[
"Cluster1",
"aggr4"
],
[
"Cluster2",
"aggr1"
],
[
"Cluster3",
"aggr2"
]
]
}
********************************************************************
Based on data from 'aggregates', Below playbook has 2 items to work on:
aggregates.name<https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Faggregates.name%2F&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=jXuSN20x%2FZ2lXD9%2B0L7j3p6rofDjnjl7ZyEA4duifRM%3D&reserved=0>:
here we need to use aggr1,aggr3,aggr2...from variable 'aggregates'
hostname: here we need to use Cluster1,Cluster2,Cluster3...from variable
'aggregates'
What looking for is:
it has to go through loop iteration until 'aggregates' list completed. First
loop iteration has to go for Cluster1, aggr1, Second loop iteration to go for
Cluster1, aggr2 based on data from 'aggregates'.
1st loop iteration:
aggregates.name<https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Faggregates.name%2F&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=jXuSN20x%2FZ2lXD9%2B0L7j3p6rofDjnjl7ZyEA4duifRM%3D&reserved=0>:
'aggr1'
hostname: 'Cluster1'
2nd loop iteration:
aggregates.name<https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Faggregates.name%2F&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=jXuSN20x%2FZ2lXD9%2B0L7j3p6rofDjnjl7ZyEA4duifRM%3D&reserved=0>:
'aggr2'
hostname: "Cluster1}"
Playbook:
---
- hosts: localhost
gather_facts: false
collections:
- netapp.ontap
vars_files:
- < login file path >
vars:
aggregates: []
login: &login
username: "{{ username }}"
password: "{{ password }}"
https: true
validate_certs: false
feature_flags:
trace_apis: true
tasks:
- name: Get info
na_ontap_rest_info:
<<: *login
gather_subset:
- storage/volumes
parameters:
aggregates.name<https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Faggregates.name%2F&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=jXuSN20x%2FZ2lXD9%2B0L7j3p6rofDjnjl7ZyEA4duifRM%3D&reserved=0>:
"{{ ?? }}" --> here we need to use aggr1,aggr3,aggr2...from variable
'aggregates'
hostname: "{{ ?? }}" --> here we need to use
Cluster1,Cluster2,Cluster3...from variable 'aggregates'
use_python_keys: true
register: vol_data
loop: "{{ ?? }}"
loop_control:
label: "{{ ?? }}"
no_log: false
- debug: var=vol_data
...
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CANGEjuX20ndh8%2Bh_oCx8nGGBJTZ4oeEFfGQb0tWy6MXAuhTucA%40mail.gmail.com<https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2FCANGEjuX20ndh8%252Bh_oCx8nGGBJTZ4oeEFfGQb0tWy6MXAuhTucA%2540mail.gmail.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=UVuH5wNAwPvU58uzYbKbnk1DZxJ6Ol4yQaU9JvSc6ZA%3D&reserved=0>.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/03325950-FBD3-49F2-82BC-485D290BDEE1%40nist.gov<https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2F03325950-FBD3-49F2-82BC-485D290BDEE1%2540nist.gov%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=5jwlMDqmF2fboGZKWjlVeFY5NKP%2F3UP%2BRlMCz3C%2BBfc%3D&reserved=0>.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CANGEjuXJdpJe7gBCCY1nQYxhz44DuQA4V7c5qVXAakPCe_-hEA%40mail.gmail.com<https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2FCANGEjuXJdpJe7gBCCY1nQYxhz44DuQA4V7c5qVXAakPCe_-hEA%2540mail.gmail.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C18342adb8c0941b1f03c08db1e466f55%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638137060241760609%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=VRxzguVhdatSBqtW7mz06TKR2JRSvPwmE5IONE06b7E%3D&reserved=0>.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/3006506F-DEBA-4596-BF35-765F7DA80939%40nist.gov.