What I've done for cases like this is use "when:" blocks on an include to pull in (or not) additional tasks.
>From the 'include:' module <https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_module.html> : ``` - name: Include task list in play only if the condition is true include: "{{ hostvar }}.yaml" static: no when: hostvar is defined ``` Or if you don't have them broken out well, you can use Ansible blocks with "when:" conditionals as shown in the block documentation <https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html#grouping-tasks-with-blocks> . I'm kind of an Ansible purist, so you mention of the callback updating/querying a database raised concerns. On Monday, November 2, 2020 at 9:15:26 AM UTC-6 Luke C wrote: > Yes, that's true and I am aware of that. However, just like I said I > though it would be quick and easy :) > > > poniedziałek, 2 listopada 2020 o 15:50:09 UTC+1 [email protected] > napisał(a): > >> On 11/2/20 3:30 PM, Luke C wrote: >> > All right, so I created a callback plugin which saves information >> automatically about each executed task to external >> > database, to put it concisely it holds of lots of information about >> task execution (output, hostname etc) + other needed >> > by users. >> > For each task unique identifier (not Anisble TASKUUID) is also >> generated - it is a combination of few fields. >> > That Custom UUID is being saved to that database as well. >> > >> > The idea is to not execute any tasks in that playbook(s) more than >> once, for this purpose Custom UUID should be checked. >> > Tasks shouldn't be executed more than once on a server because of >> irreversible actions done by those external legacy >> > scripts. (no comments on that, can't be changed for now) >> > >> > With when condition it would be problematic to check Custom_UUID for >> each task because it's not and can't be hardcoded >> > (can differ). >> > So, my first thought was to create or rather enhance my callback plugin >> to GET data from DB to check whether this >> > particular task has been already executed or not. >> > If yes, it should be omitted. >> > >> >> I'm not sure if your setup really makes sense ... it has a smell of >> overengineering. Ansible is suppose to at least >> go through the tasks to ensure that to ascertain that the desired status >> has been reached. >> >> Regards >> Racke >> >> > >> > >> > poniedziałek, 2 listopada 2020 o 14:40:14 UTC+1 [email protected] >> napisał(a): >> > >> > On Mon, Nov 2, 2020 at 8:08 AM Luke C <[email protected]> wrote: >> > > >> > > Thanks for the reply. >> > > Yes I know ... :) >> > > >> > > The problem is that I want to have dynamic when conditions for huge >> amount of tasks. >> > > With standard when condition I would have to provide a particular >> static condition for each task (which in fact >> > are mostly external script executions). >> > > I thought it would be just easier and faster with additional callback >> module. >> > > >> > I too am confused. I use when() to include an entire task file >> > or just do a task. And I could swear I have whens that looked like >> > >> > when: >> > - variable-I-populated-or-registered-a-few-lines-ago.stdout == >> > variable-I-populated-in-an-earlier-task-file-on-my-way-here.stdout >> > >> > > Kind regards >> > > Luke >> > > >> > > >> > > poniedziałek, 2 listopada 2020 o 13:57:43 UTC+1 [email protected] >> napisał(a): >> > >> >> > >> On 11/2/20 1:49 PM, Luke C wrote: >> > >> > Hey guys >> > >> > >> > >> > I would like to ask whether it's possible to SKIP task >> programmatically, using python & callback module? >> > >> > >> > >> > I've been trying to do this for 3 days and I still don't know how. >> > >> > Is there some special variable which I could use in >> *v2_runner_on_start *or *v2_playbook_on_task_start* methods? >> > >> > >> > >> > I don't want to use ansible's when condition, task should be >> omitted dynamically basing on the results gathered >> > earlier. >> > >> > >> > >> > e.g.: >> > >> > def v2_runner_on_start(self, host, task): >> > >> > if self.checksomething(): >> > >> > print("Task should be omitted") >> > >> > <OMIT TASK, DO NOT RUN IT> >> > >> > else: >> > >> > print("Yes, task should be executed, proceed") >> > >> > >> > >> > >> > >> >> > >> Do you know that Ansible's when conditions can be very well based on >> results gathered earlier? >> > >> >> > >> Regards >> > >> Racke >> > >> >> > >> > >> > >> > >> > >> > -- >> > >> > 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 >> > >> > [email protected] <mailto: >> [email protected]>. >> > >> > To view this discussion on the web visit >> > >> > >> https://groups.google.com/d/msgid/ansible-project/34e2ed5a-2fad-40cf-a852-f94af07fd096n%40googlegroups.com >> >> > < >> https://groups.google.com/d/msgid/ansible-project/34e2ed5a-2fad-40cf-a852-f94af07fd096n%40googlegroups.com> >> >> >> > >> > >> > < >> https://groups.google.com/d/msgid/ansible-project/34e2ed5a-2fad-40cf-a852-f94af07fd096n%40googlegroups.com?utm_medium=email&utm_source=footer >> >> > < >> https://groups.google.com/d/msgid/ansible-project/34e2ed5a-2fad-40cf-a852-f94af07fd096n%40googlegroups.com?utm_medium=email&utm_source=footer>>. >> >> >> > >> > >> >> > >> >> > >> -- >> > >> Ecommerce and Linux consulting + Perl and web application >> programming. >> > >> Debian and Sympa administration. Provisioning with Ansible. >> > > >> > > -- >> > > 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 [email protected]. >> > > To view this discussion on the web visit >> > >> https://groups.google.com/d/msgid/ansible-project/f1b9d8c6-f367-4c75-b812-226a4eb7b82bn%40googlegroups.com >> >> > < >> https://groups.google.com/d/msgid/ansible-project/f1b9d8c6-f367-4c75-b812-226a4eb7b82bn%40googlegroups.com>. >> >> >> > >> > -- >> > 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 >> > [email protected] <mailto: >> [email protected]>. >> > To view this discussion on the web visit >> > >> https://groups.google.com/d/msgid/ansible-project/da81770a-1ca3-4211-8f4b-98184d55a404n%40googlegroups.com >> >> > < >> https://groups.google.com/d/msgid/ansible-project/da81770a-1ca3-4211-8f4b-98184d55a404n%40googlegroups.com?utm_medium=email&utm_source=footer>. >> >> >> >> >> -- >> Ecommerce and Linux consulting + Perl and web application programming. >> Debian and Sympa administration. Provisioning with Ansible. >> > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/041f5a6d-2e8d-4315-9034-6521264d83e2n%40googlegroups.com.
