I looking to replace item value to storage name storageA. 1.File vvsets.yml.
vvsets: [{'key': 'lun.101', 'value': ['server001']}, {'key': 'lun.101', 'value': ['server001']}, {'key': 'lun.201', 'value': ['server002']}, {'key': 'lun.301', 'value': ['server003']}]
2.File main.yml.
tasks:
- name: A
include_vars: vvsets.yml
- set_fact:
vvsets: "{{ vvsets | combine(new_item, recursive=true) }}"
vars:
new_item: { 'value': 'storageA' }
loop: "{{ vvsets }}"
- Output.
TASK [set_fact]
ok: [localhost] => (item={'key': 'lun.101', 'value': ['server001']}) => {
"ansible_facts": {
"vvsets": {
"key": "lun.301",
"value": "storageA"
}
},
"ansible_loop_var": "item",
"changed": false,
"item": {
"key": "lun.101",
"value": [
"server001"
]
}
}
ok: [localhost] => (item={'key': 'lun.101', 'value': ['server001']}) => {
"ansible_facts": {
"vvsets": {
"key": "lun.301",
"value": "storageA"
}
},
"ansible_loop_var": "item",
"changed": false,
"item": {
"key": "lun.101",
"value": [
"server001"
]
}
}
ok: [localhost] => (item={'key': 'lun.201', 'value': ['server002']}) => {
"ansible_facts": {
"vvsets": {
"key": "lun.301",
"value": "storageA"
}
},
"ansible_loop_var": "item",
"changed": false,
"item": {
"key": "lun.201",
"value": [
"server002"
]
}
}
ok: [localhost] => (item={'key': 'lun.301', 'value': ['server003']}) => {
"ansible_facts": {
"vvsets": {
"key": "lun.301",
"value": "storageA"
}
},
"ansible_loop_var": "item",
"changed": false,
"item": {
"key": "lun.301",
"value": [
"server003"
]
}
}
- Based on the output, only last is change. Look like first 3 is bypassed.Below is expected new list.
vvsets:
- 'key': 'lun.101'
'value': ['storageA']
- 'key': 'lun.101'
'value': ['storageA']
- 'key': 'lun.201'
'value': ['storageA']
- 'key': 'lun.301'
'value': ['storageA']