Audit log bugfix
[ta/caas-kubernetes.git] / ansible / roles / kube_master / tasks / main.yml
1 ---
2 # Copyright 2019 Nokia
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 - name: concat certs for apiserver part 1
17   shell: "cat {{ caas.cert_path }}/apiserver{{ nodeindex }}.pem > {{ caas.cert_path }}/tls-cert.pem"
18   become_user: "root"
19
20 - name: concat certs for apiserver part 2
21   shell: "cat {{ caas.cert_path }}/ca.pem >> {{ caas.cert_path }}/tls-cert.pem"
22   become_user: "root"
23
24 - name: reducing permission of key file and cert file
25   file:
26     path: "{{ caas.cert_path }}/tls-cert.pem"
27     mode: 0000
28   become_user: "root"
29
30 - name: adding default acl read to {{ users.admin_user_name }} to {{ caas.cert_path }}/tls-cert.epm
31   acl:
32     name:  "{{ caas.cert_path }}/tls-cert.pem"
33     entity: "{{ users.admin_user_name }}"
34     etype: user
35     permissions: r
36     state: present
37   become_user: "root"
38
39 - name: adding default acl read to kube to {{ cert_path }}/tls-cert.epm
40   acl:
41     name:  "{{ caas.cert_path }}/tls-cert.pem"
42     entity: "kube"
43     etype: user
44     permissions: r
45     state: present
46   become_user: "root"
47
48 - name: set permission ca.pem and ca-key.pem
49   acl:
50     name: "{{ item }}"
51     entity: "kube"
52     etype: user
53     permissions: r
54     state: present
55   with_items:
56     - "/etc/openssl/ca.pem"
57     - "/etc/openssl/ca-key.pem"
58   become_user: "root"
59
60 - name: create directory for kubernetes_audit_log
61   file:
62     path: /var/log/audit/kube_apiserver
63     recurse: yes
64     owner: "{{ caas.uid.kube }}"
65     group: "{{ caas.uid.kube }}"
66     state: directory
67     mode: 0700
68   become_user: "root"
69
70 - name: create directory for audit policy
71   file:
72     path: "{{ caas.caas_policy_directory }}"
73     state: directory
74     recurse: yes
75   become_user: "root"
76
77 - name: template audit policy
78   template:
79     src: audit-policy.yaml
80     dest: "{{ caas.caas_policy_directory }}/audit-policy.yaml"
81     mode: 0000
82   become_user: "root"
83
84 - name: set permission to audit-policy.yaml
85   acl:
86     name:  "{{ caas.caas_policy_directory }}/audit-policy.yaml"
87     entity: "{{ item }}"
88     etype: user
89     permissions: r
90     state: present
91   with_items:
92     - "{{ caas.uid.kube }}"
93     - "{{ users.admin_user_name }}"
94   become_user: "root"
95  
96 - name: Ask the audit log disc size
97   shell: df -BM --output=size,target | grep audit | awk '{print $1}' | tr -d 'M'
98   register: audit_disc_size
99
100 - name: template apiserver
101   vars:
102     apiserver: "{{ ansible_host }}"
103     apiserver_port: "{{ caas.apiserver_secure_port }}"
104   template:
105     src: apiserver.yml
106     dest: /etc/kubernetes/manifests/apiserver.yml
107   become_user: "root"
108
109 - name: wait for container to start
110   wait_for:
111     host: "{{ ansible_host }}"
112     port: "{{ caas.apiserver_secure_port }}"
113     state: started
114     timeout: "{{ caas.container_wait_timeout }}"
115
116 - name: check for namespace
117   command: '/usr/bin/curl -I
118             https://{{ ansible_host }}:{{ caas.apiserver_secure_port }}/api/v1/namespaces/kube-system
119                     --key /etc/kubernetes/ssl/kubelet{{ nodeindex }}-key.pem
120                     --cert /etc/kubernetes/ssl/kubelet{{ nodeindex }}.pem
121                     --cacert /etc/openssl/ca.pem'
122   register: namespace_check
123   ignore_errors: yes
124
125 - name: insert namespace
126   command: '/usr/bin/curl -i
127                 https://{{ ansible_host }}:{{ caas.apiserver_secure_port }}/api/v1/namespaces
128                 -X POST
129                 -H "Content-Type: application/json"
130                 --key /etc/kubernetes/ssl/kubelet{{ nodeindex }}-key.pem
131                 --cert /etc/kubernetes/ssl/kubelet{{ nodeindex }}.pem
132                 --cacert /etc/openssl/ca.pem
133                 -d ''{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"kube-system"}}'''
134   when: namespace_check.stdout.find('200 OK') != -1
135
136 - name: template manifests
137   vars:
138     apiserver: "{{ caas.apiserver_svc_ip }}"
139     apiserver_port: "{{ caas.apiserver_svc_port }}"
140   template:
141     src: "{{ item }}"
142     dest: "/etc/kubernetes/manifests/{{ item }}"
143   with_items:
144     - cm.yml
145     - scheduler.yml
146   become_user: "root"