2 ## Copyright (c) 2020 Intel Corporation.
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
8 ## http://www.apache.org/licenses/LICENSE-2.0
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.
17 - name : install dependencies
19 name: install_dependencies
21 - name: update to git2 on RHEL 7 based distros
25 - ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
26 - ansible_distribution_version < '8'
28 - name: check if stable repo has already been added
29 command: helm repo list
30 register: helm_repo_list
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'
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'
46 - name: create Helm charts directory if needed
52 - name: generate cert and key
54 name: create_signed_k8s_certs
56 secret_name: "{{ tas_extender_secret_name }}"
57 service_name: tas-telemetry-aware-scheduling
59 host_secrets_folder: "{{ tas_ssl_mount_path }}"
60 k8s_namespace: "{{ tas_namespace }}"
61 csr_cluster_name: "{{ cluster_name | default('cluster.local') }}"
64 - name: clone TAS repository
66 repo: "{{ tas_git_url }}"
67 version: "{{ tas_git_version }}"
71 - name: make build and make image - TAS
74 chdir: "{{ tas_dir }}"
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 }}
87 - name: push TAS-controller and TAS-extender image to local registry
88 command: docker push {{ registry_local_address }}/{{ item }}:{{ tas_version }}
94 - name: create descheduler directory if needed
96 path: "{{ sigs_k8s_io_dir }}"
100 - name: clone Descheduler for Kubernetes
102 repo: "{{ descheduler_git_url }}"
103 dest: "{{ descheduler_dir }}"
105 version: "{{ descheduler_git_version }}"
107 - name: install descheduler
109 chdir: "{{ descheduler_dir }}"
111 - name: copy Helm chart resource definition to controller node
113 src: "{{ role_path }}/charts/{{ item }}"
114 dest: "/usr/src/charts/"
117 - telemetry-aware-scheduling
120 - name: populate tas Helm chart values template and push to controller node
122 src: "tas-values.yml.j2"
123 dest: "/usr/src/charts/tas-values.yml"
127 - name: create TASPolicy resource
128 command: kubectl apply -f tas-policy-crd.yml
130 chdir: "/usr/src/charts"
133 - name: install TAS helm chart
134 command: helm upgrade --install --namespace {{ tas_namespace }} {{ tas_name }} -f tas-values.yml telemetry-aware-scheduling/
136 chdir: "/usr/src/charts"
140 until: result.rc == 0
143 - name: Configure arguments from Kubernetes Scheduler file if they exist - dnsPolicy
145 path: /etc/kubernetes/manifests/kube-scheduler.yaml
147 line: " dnsPolicy: ClusterFirstWithHostNet"
148 regexp: " dnsPolicy: "
152 - name: Configure arguments to our kube-scheduler manifest - configmap
154 path: /etc/kubernetes/manifests/kube-scheduler.yaml
155 insertafter: " - kube-scheduler"
156 line: "{{ item.arg }}={{ item.value }}"
157 regexp: "{{ item.arg }}"
161 - { arg: " - --policy-configmap", value: "{{ tas_name }}-telemetry-aware-scheduling-scheduler-extender-policy" }
162 - { arg: " - --policy-configmap-namespace", value: "{{ tas_namespace }}" }
165 - name: template TAS demo policy
167 src: "tas-demo-policy.yml.j2"
168 dest: "/usr/src/charts/tas-demo-policy.yml"
172 - tas_enable_demo_policy
174 - name: create TAS demo policy resource
175 command: kubectl apply -f tas-demo-policy.yml
177 chdir: "/usr/src/charts"
179 - tas_enable_demo_policy