7 docker_bin_dir: /usr/bin
8 bin_dir: /usr/local/bin
9 ansible_ssh_pipelining: true
10 etcd_cert_dir: /etc/ssl/etcd/ssl
11 kube_network_plugin: calico
12 archive_dirname: collect-info
15 cmd: timedatectl status
19 cmd: "{{ docker_bin_dir }}/docker info"
25 cmd: ps auxf | grep -v ]$
26 - name: systemctl_failed_info
27 cmd: systemctl --state=failed --no-pager
29 cmd: "{{ bin_dir }}/kubectl get all --all-namespaces -o wide"
31 cmd: journalctl -p err --no-pager
33 cmd: "{{ bin_dir }}/etcdctl endpoint --cluster health"
35 cmd: "{{ bin_dir }}/calicoctl node status"
36 when: '{{ kube_network_plugin == "calico" }}'
37 - name: calico_workload_info
38 cmd: "{{ bin_dir }}/calicoctl get workloadEndpoint -o wide"
39 when: '{{ kube_network_plugin == "calico" }}'
40 - name: calico_pool_info
41 cmd: "{{ bin_dir }}/calicoctl get ippool -o wide"
42 when: '{{ kube_network_plugin == "calico" }}'
45 when: '{{ kube_network_plugin == "weave" }}'
47 cmd: "{{ docker_bin_dir }}/docker logs weave"
48 when: '{{ kube_network_plugin == "weave" }}'
49 - name: kube_describe_all
50 cmd: "{{ bin_dir }}/kubectl describe all --all-namespaces"
51 - name: kube_describe_nodes
52 cmd: "{{ bin_dir }}/kubectl describe nodes"
54 cmd: journalctl -u kubelet --no-pager
56 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l k8s-app=coredns -o jsonpath={.items..metadata.name}`;
57 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
58 - name: apiserver_logs
59 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l component=kube-apiserver -o jsonpath={.items..metadata.name}`;
60 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
61 - name: controller_logs
62 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l component=kube-controller-manager -o jsonpath={.items..metadata.name}`;
63 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
64 - name: scheduler_logs
65 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l component=kube-scheduler -o jsonpath={.items..metadata.name}`;
66 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
68 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l k8s-app=kube-proxy -o jsonpath={.items..metadata.name}`;
69 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
71 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l k8s-app=kube-nginx -o jsonpath={.items..metadata.name}`;
72 do {{ bin_dir }}/kubectl logs ${i} -n kube-system; done"
74 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l app=flannel -o jsonpath={.items..metadata.name}`;
75 do {{ bin_dir }}/kubectl logs ${i} -n kube-system flannel-container; done"
76 when: '{{ kube_network_plugin == "flannel" }}'
78 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l k8s-app=canal-node -o jsonpath={.items..metadata.name}`;
79 do {{ bin_dir }}/kubectl logs ${i} -n kube-system flannel; done"
80 when: '{{ kube_network_plugin == "canal" }}'
81 - name: calico_policy_logs
82 cmd: "for i in `{{ bin_dir }}/kubectl get pods -n kube-system -l k8s-app=calico-kube-controllers -o jsonpath={.items..metadata.name}`;
83 do {{ bin_dir }}/kubectl logs ${i} -n kube-system ; done"
84 when: '{{ kube_network_plugin in ["canal", "calico"] }}'
85 - name: helm_show_releases_history
86 cmd: "for i in `{{ bin_dir }}/helm list -q`; do {{ bin_dir }}/helm history ${i} --col-width=0; done"
87 when: "{{ helm_enabled|default(true) }}"
94 - /var/log/apt/history.log
101 ETCDCTL_CERT: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
102 ETCDCTL_KEY: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
103 ETCDCTL_CACERT: "{{ etcd_cert_dir }}/ca.pem"
104 ETCDCTL_ENDPOINTS: "{{ etcd_access_addresses }}"
107 - name: set etcd_access_addresses
109 etcd_access_addresses: |-
110 {% for item in groups['etcd'] -%}
111 https://{{ item }}:2379{% if not loop.last %},{% endif %}
113 when: "'etcd' in groups"
115 - name: Storing commands output
116 shell: "{{ item.cmd }} &> {{ item.name }}"
118 with_items: "{{ commands }}"
119 when: item.when | default(True)
122 - name: Fetch results
123 fetch: src={{ item.name }} dest=/tmp/{{ archive_dirname }}/commands
124 with_items: "{{ commands }}"
125 when: item.when | default(True)
129 fetch: src={{ item }} dest=/tmp/{{ archive_dirname }}/logs
130 with_items: "{{ logs }}"
133 - name: Pack results and logs
135 path: "/tmp/{{ archive_dirname }}"
136 dest: "{{ dir|default('.') }}/logs.tar.gz"
139 delegate_to: localhost
144 - name: Clean up collected command outputs
145 file: path={{ item.name }} state=absent
146 with_items: "{{ commands }}"