Appending to fact provided by module, and use aggregated fact in module function

Hi,

  • How would you append to a dict or list fact using ansible_facts spanning multiple module calls?
  • How can the result be used internally in another function of the module?

Let’s say we have a module that is designed to be called multiple times, like so, each time creating a new file with some content:

``
`

  • name: Add Foo
    mymodule:
    name: foo
    id: 1
    content: “lorem ipsum”

  • name: Add Bar
    mymodule:
    name: bar
    id: 2
    content: “dolor sit amet”
    `

Each call to the module want to return a part of a dict using ansible_facts:

`
facts = {mymodule: {id: name}}
module.exit_json(changed=True, ansible_facts=facts}

`

After these two calls, the fact should contain:

`
“mymodule”: {
1: “foo”
2: “bar”
}

`

Following the additions, there’s a final call to the module to trigger a function that should write the fact to a index file.

(A more real world example could be that files in a directory not listed in the fact, should be deleted)

`

  • name: Save mymodule additions
    mymodule:
    save: /home/user/mymodule.txt

`

How should the facts be returned in order for them to be appended, and not overwritten?

I’d rather not have use unique facts for each entry, e.g. "mymodule_1" = "Foo". Instead, I want to access the fact as a dict or list to be used internally in the module.

I realise I may be overthinking this, but I’m new to Ansible module development and I wasn’t able find any examples on how module provided facts should be used in a scenario like this.

Thanks!

  • Tim

Sorry, currently there is no way to append facts, they always overwrite.

All right. Thanks for the clarification.

  • Tim