Hooks in Ansible

208 views
Skip to first unread message

Daniel Gonçalves

unread,
Jul 25, 2022, 1:06:48 PM7/25/22
to ansible...@googlegroups.com
Hello,

I wonder if you already had some discussions about hooks in Ansible. I
tried some research but found nothing useful about what I am looking
for.

What I want to do is executing some code at the end of the playbook
execution, in other words executing some code at some arbitrary playbook
execution step. I wonder if there is some event listener I can subscribe
on in order to execute my code.

I don't know if this is good place to discuss about that or if I need to
start a thread on devel. If so let me know.

Daniel.

Vladimir Botka

unread,
Jul 25, 2022, 3:55:41 PM7/25/22
to Daniel Gonçalves, ansible...@googlegroups.com
On Mon, 25 Jul 2022 19:06:33 +0200
Daniel Gonçalves <ans...@lves.fr> wrote:

> What I want to do is executing some code at the end of the playbook
> execution, in other words executing some code at some arbitrary playbook
> execution step. I wonder if there is some event listener I can subscribe
> on in order to execute my code.

This depends on the use case:

1) To execute the code at the end of the playbook you can use
*post_tasks*. At some arbitrary playbook execution step use
*tasks*.

2) To trigger the execution of a code by some events you can use
the module *wait_for*
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/wait_for_module.html#ansible-builtin-wait-for-module-waits-for-a-condition-before-continuing
and *handlers*
https://docs.ansible.com/ansible/latest/user_guide/playbooks_handlers.html

3) To execute the code after the playbook finished you can use
*ansible-runner*
https://ansible-runner.readthedocs.io/en/stable/python_interface/#usage-examples


--
Vladimir Botka

Daniel Gonçalves

unread,
Jul 26, 2022, 1:32:47 AM7/26/22
to ansible...@googlegroups.com
Thank you for you answer.

I already know *post_tasks*, *handlers*, and *ansible-runner*, but I
don't think there are good for what I'm looking for.

You need a bit more context: I have a custom lookup plugin that
initialize some data and execute a new process in order to keep these
datas available during the playbook life.
I want to be able to send a SIGTERM signal to the process to terminate
it at the end of playbook execution.

As I want to share this custom plugin, I don't want any user
interaction, because it's not the user role to worry about this extra
process.
So *post_tasks*, *handlers*, and *wait_for* are excluded.
*ansible-runner* may be a good alternative but I don't want to force
users to use *ansible-runner* instead of *ansible*.

I hope it's more clear.

Regards,

Daniel

Vladimir Botka

unread,
Jul 26, 2022, 4:57:37 AM7/26/22
to Daniel Gonçalves, ansible...@googlegroups.com
On Tue, 26 Jul 2022 07:32:33 +0200
Daniel Gonçalves <ans...@lves.fr> wrote:

> context: I have a custom lookup plugin that
> initialize some data and execute a new process ...
> I want to be able to send a SIGTERM signal to the process to
> terminate it at the end of playbook execution.

This seems to be a candidate for *async*
https://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html#run-tasks-concurrently-poll-0

--
Vladimir Botka

Todd Lewis

unread,
Jul 26, 2022, 7:08:22 AM7/26/22
to ansible...@googlegroups.com
-- 
Todd

Daniel Gonçalves

unread,
Jul 26, 2022, 11:46:16 AM7/26/22
to ansible...@googlegroups.com
Currently my plugin's process has a Time To Live concept to keep data
during some customizable duration.
It's pretty similar to what *async* provides but the drawback is that
you need to know in advance how many time the execution will take, and
that's what I want to avoid.

Regards,

Daniel

Daniel Gonçalves

unread,
Jul 26, 2022, 11:47:22 AM7/26/22
to ansible...@googlegroups.com, Todd Lewis
Hello, thank you for your answer!

What I understand about cache plugins is that what could interrest me is
fact caching. But as far as I know, lookup plugins can't set facts.

Regards,

Daniel
> --
> You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to ansible-proje...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/07615b91-c41d-e3a7-422c-54e91af3b72e%40gmail.com
> [1].
>
>
> Links:
> ------
> [1]
> https://groups.google.com/d/msgid/ansible-project/07615b91-c41d-e3a7-422c-54e91af3b72e%40gmail.com?utm_medium=email&utm_source=footer
Reply all
Reply to author
Forward
0 new messages