# Adding a Fact to a dict for Cisco Interf.

**URL:** <https://forum.ansible.com/t/adding-a-fact-to-a-dict-for-cisco-interf/31139>\
**Category:** Ansible Project\
**Created:** [August 27, 2019, 2:44pm UTC](https://forum.ansible.com/t/adding-a-fact-to-a-dict-for-cisco-interf/31139 "2019-08-27T14:44:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Spiro\_Mitsialis](https://avatars.discourse-cdn.com/v4/letter/s/c57346/32.png) [@Spiro\_Mitsialis](https://forum.ansible.com/u/Spiro_Mitsialis)\
**Post date:** [August 27, 2019, 2:44pm UTC](https://forum.ansible.com/t/adding-a-fact-to-a-dict-for-cisco-interf/31139/1 "2019-08-27T14:44:24Z")

</div>

I have the following that is not working.

> `  
> vars:  
> cmdb: xkjsdflkjsjdl4d  
> cisco\_ios:  
> interfaces:  
> gigabit1/0/1:  
> name: Gigabit1/0/1  
> status: up  
> gigabit1/0/2:  
> name: Gigabit1/0/2  
> status: down  
> tasks:
> 
> - name: Test in loop  
> include: test\_loop\_fact2.yml  
> loop: “{{ cisco\_ios.interfaces | dict2items }}”
> - debug:  
> var: cisco\_ios
> 
> **test\_loop\_fact2** \*\*.yml:\*\*
> 
> - name: set fact  
> set\_fact:  
> new\_fact:  
> interfaces:  
> “{{ item.key }}”:
> 
> cmdbId: “{{ cmdb }}”
> 
> - name: merge  
> set\_fact:  
> cisco\_ios: “{{ cisco\_ios|combine(new\_fact,recursive=True) }}”  
> cacheable: true
> 
> `

I want to be able to insert cmdbId under cisco\_ios.interfaces.gigabit1/0/1 and cisco\_ios.interfaces.gigabit1/0/2 but I cannot figure out how to do this. With the above I get:

`  
TASK [debug] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [127.0.0.1] =\> {  
“cisco\_ios”: {  
“interfaces”: {  
“gigabit1/0/1”: {  
“name”: “Gigabit1/0/1”,  
“status”: “up”  
},  
“gigabit1/0/2”: {  
“name”: “Gigabit1/0/2”,  
“status”: “down”  
},  
“{{ item.key }}”: {  
“cmdbId”: “xkjsdflkjsjdl4d”  
}  
}  
}  
}

`

I’ve tried removing the “{{ }}” and tried but get errors. How do I reference it.  
I want to end up with

cisco\_ios:  
interfaces:  
gigabit1/0/1:  
name: Gigabit1/0/1  
status: up  
cmdbId: xxxxxx  
gigabit1/0/2:  
name: Gigabit1/0/2  
status: down  
cmdbId: xxxxxx

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [August 27, 2019, 3:23pm UTC](https://forum.ansible.com/t/adding-a-fact-to-a-dict-for-cisco-interf/31139/2 "2019-08-27T15:23:42Z")

</div>

Is this probably what are you looking for?

&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interfaces: "{{ interfaces|default({})|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combine({item.key: item.value|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combine({'cmdbId': cmdb})}) }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop: "{{ cisco\_ios.interfaces|dict2items }}"  
&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cisco\_ios: "{{ cisco\_ios.interfaces|combine(interfaces) }}"

Cheers,

&nbsp;&nbsp;-vlado

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [August 27, 2019, 3:38pm UTC](https://forum.ansible.com/t/adding-a-fact-to-a-dict-for-cisco-interf/31139/3 "2019-08-27T15:38:55Z")

</div>

> &nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cisco\_ios: "{{ cisco\_ios.interfaces|combine(interfaces) }}"

Errata:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cisco\_ios: "{{ cisco\_ios|combine({'interfaces': interfaces}) }}"
