# \[action\_plugin\] Why does set\_fact overwrite a fact and my 1:1 copy set\_fact2 does not?

**URL:** <https://forum.ansible.com/t/action-plugin-why-does-set-fact-overwrite-a-fact-and-my-1-1-copy-set-fact2-does-not/33223>\
**Category:** Ansible Project\
**Created:** [June 20, 2020, 11:31pm UTC](https://forum.ansible.com/t/action-plugin-why-does-set-fact-overwrite-a-fact-and-my-1-1-copy-set-fact2-does-not/33223 "2020-06-20T23:31:26Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Christian\_Holl](https://avatars.discourse-cdn.com/v4/letter/c/df788c/32.png) [@Christian\_Holl](https://forum.ansible.com/u/Christian_Holl)\
**Post date:** [June 20, 2020, 11:31pm UTC](https://forum.ansible.com/t/action-plugin-why-does-set-fact-overwrite-a-fact-and-my-1-1-copy-set-fact2-does-not/33223/1 "2020-06-20T23:31:26Z")

</div>

Hi all,

I created my own action plugin, I based it of set\_fact.

It works when the fact is not set already, otherwise it does not.  
To be sure I did not do any mistake (cause I could not find one in my code)  
I copied the whole set\_fact code and called the file set\_fact2.py

In the library of my ansible project the module info: library/set\_fact2.py, and the action plugin into the  
action\_plugins/set\_fact2.py

So my question: **Why does the copy set\_fact2 not overwrite value test?** But original set\_fact does? (again it is the same code, without any changes from my side)

Is there some setting for this somewhere else?

My ansible-playbook looks like

`

- set\_fact:  
test: 1

- set\_fact2:  
test: 2

- debug:  
var: test

- set\_fact:  
test: 3

- debug:  
var: test  
`

This is what happens:

> TASK [set\_fact] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ok: [localhost] =\> {  
> “ansible\_facts”: {  
> “test”: 1  
> },  
> “changed”: false  
> }
> 
> TASK [**set\_fact2**] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ok: [localhost] =\> {  
> “ansible\_facts”: {  
> “test”: 2  
> },  
> “changed”: false  
> }
> 
> TASK [debug] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ok: [localhost] =\> {  
> “test”: 1  
> }
> 
> TASK [set\_fact] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ok: [localhost] =\> {  
> “ansible\_facts”: {  
> “test”: 3  
> },  
> “changed”: false  
> }
> 
> TASK [debug] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
> ok: [localhost] =\> {  
> “test”: 3  
> }

Thanks for any help.

Kind Regards  
Christian

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [June 22, 2020, 6:44pm UTC](https://forum.ansible.com/t/action-plugin-why-does-set-fact-overwrite-a-fact-and-my-1-1-copy-set-fact2-does-not/33223/2 "2020-06-22T18:44:49Z")

</div>

because set\_fact and include\_vars are 'special', the code you see is  
only 1/2 of the issue, the core engine treats them specially, which  
won't happen for set\_fact2
