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 brae...@gmail.com 
> 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 raub...@gmail.com 
>> napisał(a): 
>> > 
>> > On Mon, Nov 2, 2020 at 8:08 AM Luke C <lukash...@gmail.com> 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 brae...@gmail.com 
>> 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 
>> > >> > ansible-proje...@googlegroups.com <mailto:
>> ansible-proje...@googlegroups.com>. 
>> > >> > 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 ansible-proje...@googlegroups.com. 
>> > > 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 
>> > ansible-proje...@googlegroups.com <mailto:
>> ansible-proje...@googlegroups.com>. 
>> > 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 ansible-project+unsubscr...@googlegroups.com.
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