Fix a set of issues with K8s deployment
[kuberef.git] / sw_config / bmra / patched_tas.yml
1 ##
2 ##   Copyright (c) 2020 Intel Corporation.
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 ---
17 - name : install dependencies
18   include_role:
19     name: install_dependencies
20
21 - name: update to git2 on RHEL 7 based distros
22   include_role:
23     name: git2_install
24   when:
25     - ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
26     - ansible_distribution_version < '8'
27
28 - name: check if stable repo has already been added
29   command: helm repo list
30   register: helm_repo_list
31   failed_when: false
32   changed_when: false
33
34 - name: add Helm stable repo
35   command: helm repo add stable https://charts.helm.sh/stable
36   when: '"https://charts.helm.sh/stable" not in helm_repo_list.stdout'
37   register: helm_add_result
38   changed_when: '"has been added to your repositories" in helm_add_result.stdout'
39
40 - name: update Helm repo before installation of public charts
41   command: helm repo update
42   register: helm_update_result
43   changed_when: '"Successfully got an update" in helm_update_result.stdout'
44
45
46 - name: create Helm charts directory if needed
47   file:
48     path: /usr/src/charts
49     state: directory
50     mode: 0755
51
52 - name: generate cert and key
53   include_role:
54     name: create_signed_k8s_certs
55   vars:
56     secret_name: "{{ tas_extender_secret_name }}"
57     service_name: tas-telemetry-aware-scheduling
58     key_pair_name: tas
59     host_secrets_folder: "{{ tas_ssl_mount_path }}"
60     k8s_namespace: "{{ tas_namespace }}"
61     csr_cluster_name: "{{ cluster_name | default('cluster.local') }}"
62   when: tas_tls_enabled
63
64 - name: clone TAS repository
65   git:
66     repo: "{{ tas_git_url }}"
67     version: "{{ tas_git_version }}"
68     dest: "{{ tas_dir }}"
69     force: yes
70
71 - name: make build and make image - TAS
72   make:
73     target: "{{ item }}"
74     chdir: "{{ tas_dir }}"
75   loop:
76     - build
77     - image
78
79 - name: tag TAS-controller and TAS-extender
80   # TAS Makefile always creates ":latest" version images
81   command: docker tag {{ item }}:latest {{ registry_local_address }}/{{ item }}:{{ tas_version }}
82   loop:
83     - tas-controller
84     - tas-extender
85   changed_when: false
86
87 - name: push TAS-controller and TAS-extender image to local registry
88   command: docker push {{ registry_local_address }}/{{ item }}:{{ tas_version }}
89   loop:
90     - tas-controller
91     - tas-extender
92   changed_when: true
93
94 - name: create descheduler directory if needed
95   file:
96     path: "{{ sigs_k8s_io_dir }}"
97     state: directory
98     mode: 0755
99
100 - name: clone Descheduler for Kubernetes
101   git:
102     repo: "{{ descheduler_git_url }}"
103     dest: "{{ descheduler_dir }}"
104     force: yes
105     version: "{{ descheduler_git_version }}"
106
107 - name: install descheduler
108   make:
109     chdir: "{{ descheduler_dir }}"
110
111 - name: copy Helm chart resource definition to controller node
112   copy:
113     src: "{{ role_path }}/charts/{{ item }}"
114     dest: "/usr/src/charts/"
115     mode: preserve
116   loop:
117     - telemetry-aware-scheduling
118     - tas-policy-crd.yml
119
120 - name: populate tas Helm chart values template and push to controller node
121   template:
122     src: "tas-values.yml.j2"
123     dest: "/usr/src/charts/tas-values.yml"
124     force: yes
125     mode: preserve
126
127 - name: create TASPolicy resource
128   command: kubectl apply -f tas-policy-crd.yml
129   args:
130     chdir: "/usr/src/charts"
131   changed_when: true
132
133 - name: install TAS helm chart
134   command: helm upgrade --install --namespace {{ tas_namespace }} {{ tas_name }} -f tas-values.yml telemetry-aware-scheduling/
135   args:
136     chdir: "/usr/src/charts"
137   retries: 5
138   delay: 5
139   register: result
140   until: result.rc == 0
141   changed_when: true
142
143 - name: Configure arguments from Kubernetes Scheduler file if they exist - dnsPolicy
144   lineinfile:
145     path: /etc/kubernetes/manifests/kube-scheduler.yaml
146     insertafter: "spec:"
147     line: "  dnsPolicy: ClusterFirstWithHostNet"
148     regexp: "  dnsPolicy: "
149     state: present
150     mode: 0600
151
152 - name: Configure arguments to our kube-scheduler manifest - configmap
153   lineinfile:
154     path: /etc/kubernetes/manifests/kube-scheduler.yaml
155     insertafter: "    - kube-scheduler"
156     line: "{{ item.arg }}={{ item.value }}"
157     regexp: "{{ item.arg }}"
158     state: present
159     mode: 0600
160   with_items:
161   - { arg: "    - --policy-configmap", value: "{{ tas_name }}-telemetry-aware-scheduling-scheduler-extender-policy" }
162   - { arg: "    - --policy-configmap-namespace", value: "{{ tas_namespace }}" }
163
164 # TAS Demo Policy
165 - name: template TAS demo policy
166   template:
167     src: "tas-demo-policy.yml.j2"
168     dest: "/usr/src/charts/tas-demo-policy.yml"
169     force: yes
170     mode: preserve
171   when:
172     - tas_enable_demo_policy
173
174 - name: create TAS demo policy resource
175   command: kubectl apply -f tas-demo-policy.yml
176   args:
177     chdir: "/usr/src/charts"
178   when:
179     - tas_enable_demo_policy