- name: collect k8s logs args: executable: /bin/bash shell: | snap logs -n all k8s > "{{ zuul.project.src_dir }}/log/k8s-logs.txt" become: true failed_when: false - name: get main resources state args: executable: /bin/bash shell: | k8s kubectl get all --all-namespaces > "{{ zuul.project.src_dir }}/log/k8s-get-all.txt" become: true failed_when: false - name: debug describe resources args: executable: /bin/bash shell: | set -o pipefail sudo k8s kubectl describe nodes > {{ zuul.project.src_dir }}/log/describe-nodes.txt sudo k8s kubectl describe pods -n kube-system > {{ zuul.project.src_dir }}/log/describe-pods-kube-system.txt MODEL="$(juju models --format=json | jq -r '.models[]["short-name"]' | grep '^zaza-')" sudo k8s kubectl describe -n $MODEL pods > {{ zuul.project.src_dir }}/log/describe-pods.txt CONTROLLER_MODEL="$(sudo k8s kubectl get ns | grep controller | awk '{print $1}')" sudo k8s kubectl describe -n $CONTROLLER_MODEL pods > {{ zuul.project.src_dir }}/log/describe-controller-pods.txt exit 0 - 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=$(sudo k8s 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: Collect pods logs args: executable: /bin/bash shell: | set -o pipefail LOG_FOLDER={{ zuul.project.src_dir }}/log/pods/ mkdir -p $LOG_FOLDER sudo k8s kubectl logs -n kube-system deployment/coredns --all-containers > $LOG_FOLDER/coredns.log MODEL_NAME=$(juju models --format=json | jq -r '.models[]["short-name"]' | grep '^zaza-') for pod in $(sudo k8s kubectl get pods -n $MODEL_NAME -o=jsonpath='{.items[*].metadata.name}'); do echo Collecting logs: $pod sudo k8s kubectl logs --ignore-errors -n $MODEL_NAME --all-containers $pod > $LOG_FOLDER/$pod.log done