| # 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 | gzip - > {{ stage_dir }}/logs/$name.txt.gz |
| 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)" \ |
| | gzip - > {{ stage_dir }}/logs/syslog.txt.gz |