blob: 633f5d742a46fe734b8fb7d5783817033e0153c8 (
plain)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
##
## Copyright (c) 2020 Intel Corporation.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
---
- name : install dependencies
include_role:
name: install_dependencies
- name: update to git2 on RHEL 7 based distros
include_role:
name: git2_install
when:
- ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
- ansible_distribution_version < '8'
- name: check if stable repo has already been added
command: helm repo list
register: helm_repo_list
failed_when: false
changed_when: false
- name: add Helm stable repo
command: helm repo add stable https://charts.helm.sh/stable
when: '"https://charts.helm.sh/stable" not in helm_repo_list.stdout'
register: helm_add_result
changed_when: '"has been added to your repositories" in helm_add_result.stdout'
- name: update Helm repo before installation of public charts
command: helm repo update
register: helm_update_result
changed_when: '"Successfully got an update" in helm_update_result.stdout'
- name: create Helm charts directory if needed
file:
path: /usr/src/charts
state: directory
mode: 0755
- name: generate cert and key
include_role:
name: create_signed_k8s_certs
vars:
secret_name: "{{ tas_extender_secret_name }}"
service_name: tas-telemetry-aware-scheduling
key_pair_name: tas
host_secrets_folder: "{{ tas_ssl_mount_path }}"
k8s_namespace: "{{ tas_namespace }}"
csr_cluster_name: "{{ cluster_name | default('cluster.local') }}"
when: tas_tls_enabled
- name: clone TAS repository
git:
repo: "{{ tas_git_url }}"
version: "{{ tas_git_version }}"
dest: "{{ tas_dir }}"
force: yes
- name: make build and make image - TAS
make:
target: "{{ item }}"
chdir: "{{ tas_dir }}"
loop:
- build
- image
- name: tag TAS-controller and TAS-extender
# TAS Makefile always creates ":latest" version images
command: docker tag {{ item }}:latest {{ registry_local_address }}/{{ item }}:{{ tas_version }}
loop:
- tas-controller
- tas-extender
changed_when: false
- name: push TAS-controller and TAS-extender image to local registry
command: docker push {{ registry_local_address }}/{{ item }}:{{ tas_version }}
loop:
- tas-controller
- tas-extender
changed_when: true
- name: create descheduler directory if needed
file:
path: "{{ sigs_k8s_io_dir }}"
state: directory
mode: 0755
- name: clone Descheduler for Kubernetes
git:
repo: "{{ descheduler_git_url }}"
dest: "{{ descheduler_dir }}"
force: yes
version: "{{ descheduler_git_version }}"
- name: install descheduler
make:
chdir: "{{ descheduler_dir }}"
- name: copy Helm chart resource definition to controller node
copy:
src: "{{ role_path }}/charts/{{ item }}"
dest: "/usr/src/charts/"
mode: preserve
loop:
- telemetry-aware-scheduling
- tas-policy-crd.yml
- name: populate tas Helm chart values template and push to controller node
template:
src: "tas-values.yml.j2"
dest: "/usr/src/charts/tas-values.yml"
force: yes
mode: preserve
- name: create TASPolicy resource
command: kubectl apply -f tas-policy-crd.yml
args:
chdir: "/usr/src/charts"
changed_when: true
- name: install TAS helm chart
command: helm upgrade --install --namespace {{ tas_namespace }} {{ tas_name }} -f tas-values.yml telemetry-aware-scheduling/
args:
chdir: "/usr/src/charts"
retries: 5
delay: 5
register: result
until: result.rc == 0
changed_when: true
- name: Configure arguments from Kubernetes Scheduler file if they exist - dnsPolicy
lineinfile:
path: /etc/kubernetes/manifests/kube-scheduler.yaml
insertafter: "spec:"
line: " dnsPolicy: ClusterFirstWithHostNet"
regexp: " dnsPolicy: "
state: present
mode: 0600
- name: Configure arguments to our kube-scheduler manifest - configmap
lineinfile:
path: /etc/kubernetes/manifests/kube-scheduler.yaml
insertafter: " - kube-scheduler"
line: "{{ item.arg }}={{ item.value }}"
regexp: "{{ item.arg }}"
state: present
mode: 0600
with_items:
- { arg: " - --policy-configmap", value: "{{ tas_name }}-telemetry-aware-scheduling-scheduler-extender-policy" }
- { arg: " - --policy-configmap-namespace", value: "{{ tas_namespace }}" }
# TAS Demo Policy
- name: template TAS demo policy
template:
src: "tas-demo-policy.yml.j2"
dest: "/usr/src/charts/tas-demo-policy.yml"
force: yes
mode: preserve
when:
- tas_enable_demo_policy
- name: create TAS demo policy resource
command: kubectl apply -f tas-demo-policy.yml
args:
chdir: "/usr/src/charts"
when:
- tas_enable_demo_policy
|