- name: Create destination for logs file: path: "{{ zuul.project.src_dir }}/log" state: directory mode: 0755 - name: debug logs replay args: executable: /bin/bash shell: | set -o pipefail MODEL="$(juju models --format=json | jq -r '.models[]["short-name"]' | grep '^zaza-')" juju switch $MODEL juju debug-log --replay > {{ zuul.project.src_dir }}/log/debug-hooks.txt exit 0 - name: debug describe pods args: executable: /bin/bash shell: | set -o pipefail MODEL="$(juju models --format=json | jq -r '.models[]["short-name"]' | grep '^zaza-')" microk8s.kubectl describe -n $MODEL pods > {{ zuul.project.src_dir }}/log/describe-pods.txt exit 0 - name: juju status args: executable: /bin/bash shell: | set -o pipefail for model in $(juju models | grep zaza- | awk '{gsub(/\*?/,""); print $1}'); do juju status -m $model > {{ zuul.project.src_dir }}/log/juju-status.$model.txt juju status -m $model --format=yaml > {{ zuul.project.src_dir }}/log/juju-status.$model.yaml done - name: Collect var logs args: executable: /bin/bash shell: | set -o pipefail MODEL_NAME=$(juju models --format=json | jq -r '.models[]["short-name"]' | grep '^zaza-') UNITS=$(juju status --format oneline | awk '{print $2}' | sed -e 's!:!!' | grep -Ev '^$' | paste -s -d' ') for UNIT_NAME in $UNITS; do POD_NAME=$(echo $UNIT_NAME | sed -e 's!/!-!') CONTAINERS=$(microk8s.kubectl get pods -n $MODEL_NAME $POD_NAME -o jsonpath='{.spec.containers[*].name}' | sed -e 's/charm //') for CONTAINER in $CONTAINERS; do juju ssh --container $CONTAINER -m $MODEL_NAME $UNIT_NAME "tar zcf /tmp/logs.tgz /var/log/" juju scp --container $CONTAINER -m $MODEL_NAME $UNIT_NAME:/tmp/logs.tgz {{ zuul.project.src_dir }}/log/$POD_NAME-$CONTAINER.tgz done done - name: fetch juju logs synchronize: dest: "{{ zuul.executor.log_root }}" mode: pull src: "{{ zuul.project.src_dir }}/log" verify_host: true owner: false group: false