Use stage_dir instead of /opt/stack

Historically we have collected devstack logs under /opt/stack.
Stop doing that and collect them in the stage_dir instead, so that
once the base job logs pull service comes around we are ready for it.

This add the benefit of writing things into a folder which is
already owned by the ansible user (ansible_user_dir), so we don't
run into issue writing there.

A few logs (devstack log, log summary and dstat) use to show up on
logs.o.o. just because they happened to already be in /opt/stack/logs.
With this change they would be lost, so adding them to post.yaml.

Depends-on: I5ad4dfccbc1389da3afc53f3c866d3475e006db6

Change-Id: Ib4be2f5056c0dc2b776de4a0d18b47b12624be92
This commit is contained in:
Andrea Frittoli (andreaf) 2017-12-11 14:30:59 +00:00
parent 4187d2fc4a
commit 290d9d87f4
5 changed files with 45 additions and 8 deletions

View File

@ -1,14 +1,24 @@
- hosts: all
become: True
vars:
devstack_log_dir: "{{ devstack_base_dir|default('/opt/stack') }}/logs/"
devstack_conf_dir: "{{ devstack_base_dir|default('/opt/stack') }}/devstack/"
stage_dir: "{{ devstack_base_dir|default('/opt/stack') }}"
roles:
- export-devstack-journal
- role: stage-output
zuul_copy_output:
{ '{{ devstack_conf_dir }}/local.conf': 'logs',
'{{ devstack_conf_dir }}/.stackenv': 'logs' }
'{{ devstack_conf_dir }}/.stackenv': 'logs' ,
'{{ devstack_log_dir }}/dstat-csv.log': 'logs',
'{{ devstack_log_dir }}/devstacklog.txt': 'logs',
'{{ devstack_log_dir }}/devstacklog.txt.summary': 'logs' }
extensions_to_txt:
- conf
- fetch-devstack-log-dir
- log
- summary
# NOTE(andreaf) We need fetch-devstack-log-dir only as long as the base job
# starts pulling logs for us from {{ ansible_user_dir }}/logs.
# Meanwhile we already store things in ansible_user_dir and use
# fetch-devstack-log-dir setting devstack_base_dir
- role: fetch-devstack-log-dir
devstack_base_dir: "{{ ansible_user_dir }}"

View File

@ -0,0 +1,12 @@
Prepare apache configs and logs for staging
Make sure apache config files and log files are available in a linux flavor
independent location. Note that this relies on hard links, to the staging
directory must be in the same partition where the logs and configs are.
**Role Variables**
.. zuul:rolevar:: stage_dir
:default: {{ ansible_user_dir }}
The base stage directory.

View File

@ -5,11 +5,17 @@ journal format as well as text. Also, export a syslog-style file with
kernal and sudo messages.
Writes the output to the ``logs/`` subdirectory of
``devstack_base_dir``.
``stage_dir``.
**Role Variables**
.. zuul:rolevar:: devstack_base_dir
:default: /opt/stack
The devstack base directory.
The devstack base directory. This is used to obtain the
``log-start-timestamp.txt``, used to filter the systemd journal.
.. zuul:rolevar:: stage_dir
:default: {{ ansible_user_dir }}
The base stage directory.

View File

@ -1 +1,2 @@
devstack_base_dir: /opt/stack
stage_dir: "{{ ansible_user_dir }}"

View File

@ -1,3 +1,11 @@
# 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
@ -7,7 +15,7 @@
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 {{ devstack_base_dir }}/logs/$name.txt > /dev/null
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
@ -16,7 +24,7 @@
# 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 - > {{ devstack_base_dir }}/logs/devstack.journal.xz
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
@ -26,4 +34,4 @@
-t sudo \
--no-pager \
--since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \
| tee {{ devstack_base_dir }}/logs/syslog.txt > /dev/null
| tee {{ stage_dir }}/logs/syslog.txt > /dev/null