I don't 100% understand your ultimate aim here. It might be easier to understand if you break it down into smaller steps and include some sample inputs and desired output?
A sanitised version of what's in
my_instance,
item_list
, and what you would like out at the end might help?
IF I understand what you're trying to do, using your loop item as the key for your set_fact. For me, with appropriate quoting this seems to work...
$ cat wtf.yml
- hosts: localhost
become: no
gather_facts: no
vars:
varlist:
- value1
- value2
- valueC
tasks:
- name: Use item as the fact key for set_fact in a loop
set_fact:
"{{ item }}": value
loop: "{{ varlist }}"
- name: Check the values assigned to the facts
debug:
var: "{{ item }}"
loop: "{{ varlist }}"
$ ansible-playbook wtf.yml
PLAY [localhost] *************************************************************************************************************************
TASK [Use item as the fact key for set_fact in a loop] ***********************************************************************************
ok: [localhost] => (item=value1)
ok: [localhost] => (item=value2)
ok: [localhost] => (item=valueC)
TASK [Check the values assigned to the facts] ********************************************************************************************
ok: [localhost] => (item=value1) => {
"ansible_loop_var": "item",
"item": "value1",
"value1": "value"
}
ok: [localhost] => (item=value2) => {
"ansible_loop_var": "item",
"item": "value2",
"value2": "value"
}
ok: [localhost] => (item=valueC) => {
"ansible_loop_var": "item",
"item": "valueC",
"valueC": "value"
}
PLAY RECAP *******************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0