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.

Reply via email to