summaryrefslogtreecommitdiffstats
path: root/kud/deployment_infra/playbooks/preconfigure-sriov.yml
blob: fd16d935c46e1e3f86541017adc53b92b23f7be3 (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
---
# SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2018
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

- hosts: kube-node
  become: yes
  pre_tasks:
    - name: Create SRIOV driver folder in the target destination
      file:
        state: directory
        path: "{{ item }}"
      with_items:
        - sriov
    - copy:
        src: "{{ playbook_dir }}/sriov_hardware_check.sh"
        dest: sriov
    - name: Changing perm of "sh", adding "+x"
      shell: "chmod +x sriov_hardware_check.sh"
      args:
        chdir: "sriov"
        warn: False
    - name: Register SRIOV
      shell: "echo {{ SRIOV | default(False) }}"
    - name: Run the script and Re-evaluate the variable
      command: sriov/sriov_hardware_check.sh
      register: output
    - set_fact:
        _SRIOV: "{{ output.stdout }}"
    - name: Recreate the conf file for every host
      file:
        path: /tmp/sriov.conf
        state: absent
      delegate_to: localhost
    - lineinfile : >
       dest=/tmp/sriov.conf
       create=yes
       line='{{_SRIOV}}'
      delegate_to: localhost
    - name: Clean the script and folder.
      file:
        path: sriov
        state: absent

# Run the following task only if the SRIOV is set to True
# i.e when SRIOV hardware is available
- hosts: localhost
  become: yes
  pre_tasks:
    - name: Read SRIOV value from the conf file.
      command: cat /tmp/sriov.conf
      register: installer_output
      become: yes
    - set_fact:
        SRIOV_NODE: "{{ installer_output.stdout }}"
    - name: Load kud variables
      include_vars:
        file: kud-vars.yml
      when: SRIOV_NODE
  tasks:
    - name: Create sriov folder
      file:
        state: directory
        path: "{{ sriov_dest }}"
      ignore_errors: yes
      when: SRIOV_NODE
    - name: Get SRIOV compatible driver
      get_url: "url={{ driver_url }}  dest=/tmp/{{ package }}.tar.gz"
      when: SRIOV_NODE
    - name: Extract sriov source code
      unarchive:
         src: "/tmp/{{ package }}.tar.gz"
         dest: "{{ sriov_dest }}"
      when: SRIOV_NODE
    - name: Build the default target
      make:
        chdir: "/tmp/sriov/{{ package }}/src"
      become: yes
      when: SRIOV_NODE
# Copy all the driver and install script into target node
- hosts: kube-node
  become: yes
  pre_tasks:
    - name: Load kud variables
      include_vars:
        file: kud-vars.yml
      when: _SRIOV
  tasks:
    - name: create SRIOV driver folder in the target destination
      file:
        state: directory
        path: "{{ item }}"
      with_items:
        - sriov_driver
      when: _SRIOV
    - copy:
        src: "{{ sriov_dest }}/{{ package }}/src/iavf.ko"
        dest: sriov_driver
        remote_src: no
      when: _SRIOV
    - copy:
        src: "{{ playbook_dir }}/install_iavf_drivers.sh"
        dest: sriov_driver/install.sh
        remote_src: no
      when: _SRIOV
    - name: Changing perm of "install.sh", adding "+x"
      file: dest=sriov_driver/install.sh mode=a+x
      when: _SRIOV
    - name: Run a script with arguments
      shell: ./install.sh
      args:
        chdir: "sriov_driver"
      when: _SRIOV