# Why do I have to split up this set\_fact into multiple? or am I doing something incorrect?

**URL:** <https://forum.ansible.com/t/why-do-i-have-to-split-up-this-set-fact-into-multiple-or-am-i-doing-something-incorrect/27487>\
**Category:** Ansible Project\
**Created:** [May 9, 2018, 5:56am UTC](https://forum.ansible.com/t/why-do-i-have-to-split-up-this-set-fact-into-multiple-or-am-i-doing-something-incorrect/27487 "2018-05-09T05:56:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarcG](https://avatars.discourse-cdn.com/v4/letter/m/bb73d2/32.png) [@MarcG](https://forum.ansible.com/u/MarcG)\
**Post date:** [May 9, 2018, 5:56am UTC](https://forum.ansible.com/t/why-do-i-have-to-split-up-this-set-fact-into-multiple-or-am-i-doing-something-incorrect/27487/1 "2018-05-09T05:56:16Z")

</div>

Hi can someone please explain why the following two seperate 'set\_fact’s work.

- name : combine network and wildcard

set\_fact:

net\_mask: “{{ ‘{{network}}/{{wildcard}}’ }}”

when: ansible\_network\_os == ‘asa’

- name : determine netmask from wildcard

set\_fact:

mynetmask: “{{ net\_mask |ipaddr(‘netmask’) }}”

when: ansible\_network\_os == ‘asa’

But this ‘combined’ effort doesn’t work

- name : determine netmask from network and wildcard

set\_fact:

mynetmask : “{{ ‘{{network}}/{{wildcard}}’ |ipaddr(‘netmask’) }}”

when: ansible\_network\_os == ‘asa’

I’m trying to understand the limitations of set\_facts.

Cheers.

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [May 9, 2018, 10:39am UTC](https://forum.ansible.com/t/why-do-i-have-to-split-up-this-set-fact-into-multiple-or-am-i-doing-something-incorrect/27487/2 "2018-05-09T10:39:29Z")

</div>

> Hi can someone please explain why the following two seperate 'set\_fact's  
> work.
> 
> &nbsp;&nbsp;- name : combine network and wildcard  
> &nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net\_mask: "{{ '{{network}}/{{wildcard}}' }}"  
> &nbsp;&nbsp;&nbsp;&nbsp;when: ansible\_network\_os == 'asa'

You can't use {{ }} inside {{ }}  
So correct syntax is

&nbsp;&nbsp;&nbsp;- name : combine network and wildcard  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net\_mask: '{{network}}/{{wildcard}}'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when: ansible\_network\_os == 'asa'

> &nbsp;&nbsp;- name : determine netmask from wildcard  
> &nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynetmask: "{{ net\_mask |ipaddr('netmask') }}"  
> &nbsp;&nbsp;&nbsp;&nbsp;when: ansible\_network\_os == 'asa'
> 
> But this 'combined' effort doesn't work
> 
> &nbsp;&nbsp;- name : determine netmask from network and wildcard  
> &nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynetmask : "{{ '{{network}}/{{wildcard}}' |ipaddr('netmask') }}"  
> &nbsp;&nbsp;&nbsp;&nbsp;when: ansible\_network\_os == 'asa'

&nbsp;&nbsp;&nbsp;- name : determine netmask from network and wildcard  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynetmask : "{{ (network ~ '/' ~ wildcard) |ipaddr('netmask') }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when: ansible\_network\_os == 'asa'

> I'm trying to understand the limitations of set\_facts.

There is no limitation, you just need to use the correct jinja2 syntax.

---

<div class="post-metadata">

**Author:** ![MarcG](https://avatars.discourse-cdn.com/v4/letter/m/bb73d2/32.png) [@MarcG](https://forum.ansible.com/u/MarcG)\
**Post date:** [May 10, 2018, 7:09am UTC](https://forum.ansible.com/t/why-do-i-have-to-split-up-this-set-fact-into-multiple-or-am-i-doing-something-incorrect/27487/3 "2018-05-10T07:09:04Z")

</div>

Thank you very much. It looks like I have some reading to do 🙂

Cheers
