So I have been playing around with multiple callbacks and ordering. I created two callback plugins: calltest1, calltest2. Each one simply prints its number and fcn to the screen:
e.g.
TEST1: v2_playbook_on_start()
TEST2: v2_playbook_on_start()
Some observations:
1. If I put the callbacks in ./callback_plugins, I cannot choose the order at runtime. I assume they run in ABC order.
2. If I put the callbacks in separate roles, (
roles/calltest1/callback_plugins,
roles/calltest2/callback_plugins/ respectively), then I can control the ordering by calling roles:
file: calltestsite.yml
---
roles:
- calltest2
- calltest1
output:
TEST2: v2_playbook_on_start()
TEST1: v2_playbook_on_start()
3. However, and this is where it gets weird:
If I set calltest2 as a dependency of calltest1, calltest1 fires first!
file: roles/calltest1/meta/main.yml
---
dependencies:
- { role: calltest2 }
file: calltestsite.yml
output:
TEST1: v2_playbook_on_start()
TEST2: v2_playbook_on_start()
4. what's really weird is that I know for sure that calltest2 is actually running first:
file: roles/calltest1/tasks/main.yml
---
- name: calltest1 show me role task
debug: var="calltest1 role task"
file: roles/calltest1/tasks/main.yml
---
- name: calltest1 show me role task
debug: var="calltest1 role task"
output:
TASK [calltest2 : calltest2 show me role task] *********************************
TEST1: v2_runner_on_ok()
TEST2: v2_runner_on_ok()
TEST1: v2_playbook_on_task_start()
TEST2: v2_playbook_on_task_start()
TASK [calltest1 : calltest1 show me role task] *********************************
TEST1: v2_runner_on_ok()
TEST2: v2_runner_on_ok()
Is this expected behavior?
(fwiw, I'm not planning on listing callback dependencies, but thought the behavior was curious)