| # NOTE(andreaf) This bypasses the stage-output role | 
 | - name: Ensure {{ stage_dir }}/logs exists | 
 |   become: true | 
 |   file: | 
 |     path: "{{ stage_dir }}/logs" | 
 |     state: directory | 
 |     owner: "{{ ansible_user }}" | 
 |  | 
 | # TODO: convert this to ansible | 
 | - name: Export journal files | 
 |   become: true | 
 |   shell: | 
 |     cmd: | | 
 |       u="" | 
 |       name="" | 
 |       for u in `systemctl list-unit-files | grep devstack | awk '{print $1}'`; do | 
 |         name=$(echo $u | sed 's/devstack@/screen-/' | sed 's/\.service//') | 
 |         journalctl -o short-precise --unit $u | tee {{ stage_dir }}/logs/$name.txt > /dev/null | 
 |       done | 
 |  | 
 |       # Export the journal in export format to make it downloadable | 
 |       # for later searching. It can then be rewritten to a journal native | 
 |       # format locally using systemd-journal-remote. This makes a class of | 
 |       # debugging much easier. We don't do the native conversion here as | 
 |       # some distros do not package that tooling. | 
 |       journalctl -u 'devstack@*' -o export | \ | 
 |           xz --threads=0 - > {{ stage_dir }}/logs/devstack.journal.xz | 
 |  | 
 |       # The journal contains everything running under systemd, we'll | 
 |       # build an old school version of the syslog with just the | 
 |       # kernel and sudo messages. | 
 |       journalctl \ | 
 |           -t kernel \ | 
 |           -t sudo \ | 
 |           --no-pager \ | 
 |           --since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \ | 
 |         | tee {{ stage_dir }}/logs/syslog.txt > /dev/null |