Description of problem: During update, we do this: - generate ansible tasks with step conditional attached - run all the tasks inside a step0 to step5 loop This means that every step 1 tasks is hit 6 times and only run once. The other 5 times it's skipped. It seems that even skipped task make a ssh connection which make the overall cost even higher. This make the log less readable, a simple grep doesn't work as expected as you can hit the skipped tasks as well. We need to "invert" the logic here. We should collect all conditionals and generate one playbook by step. Like this, we don't change the interface (step conditional) but we only run each task in each step once.