summaryrefslogtreecommitdiffstats
path: root/sw_config/bmra/patched_tas.yml
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