forked from nais/naisible
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest-playbook.yaml
103 lines (91 loc) · 3.26 KB
/
test-playbook.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
---
- hosts: etcd
user: "{{ remote_user }}"
become: yes
tasks:
- name: Ensure required processes is running
shell: /bin/pgrep --exact etcd | wc -l
register: etcd_process_count
failed_when: etcd_process_count.stdout != "1"
changed_when: false
- name: Ensure cluster is healthy
shell: "{{ install_dir }}/bin/etcdctl endpoint health | tail -n1"
environment:
- ETCDCTL_CERT: /etc/ssl/etcd/etcd-client.pem
- ETCDCTL_KEY: /etc/ssl/etcd/etcd-client-key.pem
- ETCDCTL_CACERT: /etc/ssl/etcd/ca.pem
register: etcd_health_status
failed_when: etcd_health_status.stdout.find('is healthy') != -1
changed_when: false
- hosts: masters
user: "{{ remote_user }}"
become: yes
vars:
K8S_HOST_COUNT: "{{ (groups['workers'] | length) + (groups['masters'] | length) }}"
tasks:
- name: Ensure required processes is running
shell: /bin/pgrep {{ item }} | wc -l
loop:
- dockerd
- kubelet
register: process_count
failed_when: process_count.stdout != "1"
changed_when: false
- name: Ensure docker interfaces is present
command: ip link show docker0
changed_when: false
- name: Ensure all kubernetes components are healthy
command: "{{ install_dir }}/bin/kubectl get componentstatuses"
register: componentstatuses
failed_when: "'Unhealthy' in componentstatuses.stdout"
changed_when: false
- name: Verify that all nodes are in Ready-state
shell: "{{ install_dir }}/bin/kubectl get nodes | grep -iw 'Ready' | wc -l"
register: ready_count
failed_when: ready_count.stdout != "{{ K8S_HOST_COUNT }}"
changed_when: false
- name: Ensure addons (namespace deployment) are deployed and available
shell: "{{ install_dir }}/bin/kubectl get deploy -n {{ item }} -o json | grep '\"availableReplicas\":' | grep -v 0 | wc -l"
loop:
- "nais coredns"
register: matches_spec
retries: 6
delay: 9
until: matches_spec.stdout == "1"
changed_when: false
- hosts: workers
user: "{{ remote_user }}"
become: yes
tasks:
- name: Ensure required processes is running
shell: /bin/pgrep {{ item }} | wc -l
loop:
- dockerd
- kubelet
- flanneld
- kube-proxy
register: process_count
failed_when: process_count.stdout != "1"
changed_when: false
- name: Ensure required interfaces is present
command: ip link show {{ item }}
loop:
- docker0
- flannel.1
changed_when: false
- hosts: all
user: "{{ remote_user }}"
become: yes
tasks:
- name: Ensure node taints are set
shell: "{{ install_dir }}/bin/kubectl --kubeconfig=/etc/kubernetes/kubeconfigs/kubelet.conf describe no {{ inventory_hostname }} | grep '{{ item }}$' | wc -l"
loop: "{{ node_taints|default([]) }}"
register: matches_spec
failed_when: matches_spec.stdout != "1"
changed_when: false
- name: Ensure node labels are set
shell: "{{ install_dir }}/bin/kubectl --kubeconfig=/etc/kubernetes/kubeconfigs/kubelet.conf describe no {{ inventory_hostname }} | grep '{{ item }}$' | wc -l"
loop: "{{ node_labels|default([]) }}"
register: matches_spec
failed_when: matches_spec.stdout != "1"
changed_when: false