You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

39 lines
1.5 KiB

---
- import_role: # noqa name[missing]
name: cluster-dump
- name: Check kubectl output
command: "{{ bin_dir }}/kubectl get pods --all-namespaces -owide"
changed_when: false
- name: Check pods
vars:
query_pods_not_running: "items[?status.phase != 'Running']"
query_pods_not_ready: "items[?(status.conditions[?type == 'Ready'])[0].status != 'True']"
pods_not_running: "{{ run_pods_log.stdout | from_json | json_query(query_pods_not_running + '.metadata') }}"
pods_not_ready: "{{ run_pods_log.stdout | from_json | json_query(query_pods_not_ready + '.metadata') }}"
block:
- name: Check that all pods are running
command: "{{ bin_dir }}/kubectl get pods --all-namespaces -o json"
register: run_pods_log
changed_when: false
until:
# Check that all pods are running
- run_pods_log.stdout | from_json | json_query(query_pods_not_running) == []
# Check that all pods are ready
- run_pods_log.stdout | from_json | json_query(query_pods_not_ready) == []
retries: 30
delay: 10
rescue:
- name: Describe broken pods
command: "{{ bin_dir }}/kubectl describe pod -n {{ item.namespace }} {{ item.name }}"
loop: "{{ pods_not_running + pods_not_ready }}"
loop_control:
label: "{{ item.namespace }}/{{ item.name }}"
- name: Get logs from broken pods
command: "{{ bin_dir }}/kubectl logs -n {{ item.namespace }} {{ item.name }}"
loop: "{{ pods_not_running + pods_not_ready }}"
loop_control:
label: "{{ item.namespace }}/{{ item.name }}"
- name: Fail CI
fail: {}