Right - anything that changes the output (server-results) to come in a deterministic order would not be real-time.
However, going back to my original question, how about simply a flag to give line-based output? That is, supress the headings and instead show the play and task name on the same line as the server name. This is a simple change to the output formatting but would make a world of difference to all of us who use any sort of unix-y (i.e. line-based) tool. It can still be real-time output but would be *much* more friendly to pipelines.
skipping: [server1] TASK: [get latest oracle scripts] PLAY [environment for grid user]
skipping: [server1] TASK: [get latest oracle scripts] PLAY [environment for oracle user]
ok: [server1] TASK: [iptables] PLAY [networking, time, passwords, etc]
ok: [server2] => (item=init.sql) TASK: [copy additional tpt files] PLAY [environment for grid user]
ok: [server2] => (item=init.sql) TASK: [copy additional tpt files] PLAY [environment for oracle user]
ok: [server2] => (item=snapper4.sql) TASK: [copy additional tpt files] PLAY [environment for grid user]
ok: [server2] => (item=snapper4.sql) TASK: [copy additional tpt files] PLAY [environment for oracle user]
changed: [server2] TASK: [ORAENV_ASK set correctly (uppercase) in bash_profile] PLAY [environment for grid user]
ok: [server2] TASK: [ORAENV_ASK set correctly (uppercase) in bash_profile] PLAY [environment for oracle user]
ok: [server2] TASK: [bg color - bash_logout] PLAY [ansible setup, terminal colors]
ok: [server2] TASK: [bg color - colorprompt] PLAY [ansible setup, terminal colors]
ok: [server2] TASK: [bg color - dircolor256 file] PLAY [ansible setup, terminal colors]
Having a flag to generate output like this wouldn't compromise the real-time nature of the output but it would be *much* easier to inject into a pipeline. It should also be pretty trivial to implement... I might be able to put together a patch if it might be considered (i.e. not contrary to any design goals).