Hi Team,
how i will get rid of dictionary or only grab first match in loop output with satisfying when condition.
Hi Team,
how i will get rid of dictionary or only grab first match in loop output with satisfying when condition.
That is strange, because I copy-n-pasted you play and data, and it worked for me. Does your output before your last step look like mine?
$ ansible-playbook isilon.yml
PLAY [Isilon tests] ****************************************************************************
TASK [First Read isilon cluster csv file from mount point for login] ***************************
ok: [localhost]
TASK [Print The inventry Full File in List format] *********************************************
ok: [localhost] => {
“msg”: [
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “cnnndcisip-hc01”,
“Data Center”: “NDC”,
“Dedicated region”: “SC”,
“Environment”: “Production”,
“IP Address”: “172.19.94.62”,
“Serial No.”: “CF2ZJ203800133”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “”,
“Data Center”: “NDC”,
“Dedicated region”: “”,
“Environment”: “Production”,
“IP Address”: “172.19.94.63”,
“Serial No.”: “CF2ZJ204300024”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “”,
“Data Center”: “NDC”,
“Dedicated region”: “”,
“Environment”: “Production”,
“IP Address”: “172.19.94.64”,
“Serial No.”: “CF2ZJ204300026”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “massdcisip-hc01”,
“Data Center”: “SSDC”,
“Dedicated region”: “MA”,
“Environment”: “Production”,
“IP Address”: “172.30.146.231”,
“Serial No.”: “JACNT205160062”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “”,
“Data Center”: “SSDC”,
“Dedicated region”: “”,
“Environment”: “Production”,
“IP Address”: “172.30.146.232”,
“Serial No.”: “JACNT210260055”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “”,
“Data Center”: “SSDC”,
“Dedicated region”: “”,
“Environment”: “Production”,
“IP Address”: “172.30.146.233”,
“Serial No.”: “JACNT210260073”
},
{
“Business Purpose”: “KPHC”,
“Cluster Name”: “”,
“Data Center”: “SSDC”,
“Dedicated region”: “”,
“Environment”: “Production”,
“IP Address”: “172.30.146.234”,
“Serial No.”: “JACNT210260083”
}
]
}
TASK [Get isilon host from isilon cluster file.] ***********************************************
skipping: [localhost] => (item={‘Data Center’: ‘NDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘CF2ZJ203800133’, ‘Cluster Name’: ‘cnnndcisip-hc01’, ‘Dedicated region’: ‘SC’, ‘IP Address’: ‘172.19.94.62’})
skipping: [localhost] => (item={‘Data Center’: ‘NDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘CF2ZJ204300024’, ‘Cluster Name’: ‘’, ‘Dedicated region’: ‘’, ‘IP Address’: ‘172.19.94.63’})
skipping: [localhost] => (item={‘Data Center’: ‘NDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘CF2ZJ204300026’, ‘Cluster Name’: ‘’, ‘Dedicated region’: ‘’, ‘IP Address’: ‘172.19.94.64’})
ok: [localhost] => (item={‘Data Center’: ‘SSDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘JACNT205160062’, ‘Cluster Name’: ‘massdcisip-hc01’, ‘Dedicated region’: ‘MA’, ‘IP Address’: ‘172.30.146.231’})
skipping: [localhost] => (item={‘Data Center’: ‘SSDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘JACNT210260055’, ‘Cluster Name’: ‘’, ‘Dedicated region’: ‘’, ‘IP Address’: ‘172.30.146.232’})
skipping: [localhost] => (item={‘Data Center’: ‘SSDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘JACNT210260073’, ‘Cluster Name’: ‘’, ‘Dedicated region’: ‘’, ‘IP Address’: ‘172.30.146.233’})
skipping: [localhost] => (item={‘Data Center’: ‘SSDC’, ‘Environment’: ‘Production’, ‘Business Purpose’: ‘KPHC’, ‘Serial No.’: ‘JACNT210260083’, ‘Cluster Name’: ‘’, ‘Dedicated region’: ‘’, ‘IP Address’: ‘172.30.146.234’})
TASK [Print The File System Name] **************************************************************
ok: [localhost] => {
“msg”: [
“massdcisip-hc01”,
“172.30.146.231”
]
}
PLAY RECAP *************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Yes, that was same , i also got the perfect list of dictionaries , but it giving bad error
I like to use json_query to search a JSON list. This saves “looping” in ansible. I find it faster. The result is a list, but you can always select your_list[0] for the first one.
Data Center
=='+primary_data_center+'
&& Dedicated region
=='+region+'
]’) | list }}”when: my_isilons is iterable and len(my_isilons) > 0
The added benefit of this method is you can now test in later tasks whether the query result is interable and has a length greater than zero to determine whether you found a match.
isilon_cluster_name_p: “{{ my_isilons**[0][‘Cluster Name’] }}"
isilon_ip_address_p: "{{ my_isilons**[0][‘IP Address’] }}”
when: my_isilons is iterable and len(my_isilons) > 0
You also can act on more than one item if the json query matched multiple items.
isilon_cluster_name_p: “{{ item[‘Cluster Name’] }}”
isilon_ip_address_p: “{{ item[‘IP Address’] }}”
loop: “{{ my_isilons }}”
when: my_isilons is iterable and len(my_isilons) > 0
Walter
Thanks .
The issue was with my csv file , i created new file and pasted same data(with same format ) and it worked
both json_query and item['‘column_data’] working properly