diff options
author | Akhila Kishore <akhila.kishore@intel.com> | 2019-09-23 14:57:43 -0700 |
---|---|---|
committer | Akhila Kishore <akhila.kishore@intel.com> | 2019-10-21 20:45:10 -0700 |
commit | 4a9ca697710e8ab87e3e286a852d5413c4adc037 (patch) | |
tree | c2aec1f7e62556be502d252166df95a93a31a677 /kud/deployment_infra/playbooks/preconfigure-sriov.yml | |
parent | 07eb93be83349a4da6b41c5a0a1dc98284462098 (diff) |
Adding SRIOV Network Device Plugin to KuD
Integrating SRIOV as an add-on to KuD. A device
should have X700 series NIC for this Add-on to work.
Getting the device driver, build and installing it is
a part of this patch. Followed by running the SRIOV CNI
Daemonset, and NetworkAttachmentDefinition.
Reworked the way SRIOV check happens.
Previously ran on installer.sh.
Now the script is injected into kube-nodes and playbook will run
only if the hardware check is true by creating a conf file.
Removed unwanted comments and nit changes.
Signed-off-by: Akhila Kishore <akhila.kishore@intel.com>
Issue-ID: MULTICLOUD-832
Change-Id: I1701a50bc717ddca0d332d6a42d329eaf4c03820
Diffstat (limited to 'kud/deployment_infra/playbooks/preconfigure-sriov.yml')
-rw-r--r-- | kud/deployment_infra/playbooks/preconfigure-sriov.yml | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/kud/deployment_infra/playbooks/preconfigure-sriov.yml b/kud/deployment_infra/playbooks/preconfigure-sriov.yml new file mode 100644 index 00000000..c4276e1b --- /dev/null +++ b/kud/deployment_infra/playbooks/preconfigure-sriov.yml @@ -0,0 +1,116 @@ +--- +# 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 }}" + - meta: end_play + when: SRIOV_NODE == "False" + - name: Load kud variables + include_vars: + file: kud-vars.yml + when: SRIOV_NODE == "True" + tasks: + - name: Create sriov folder + file: + state: directory + path: "{{ sriov_dest }}" + when: SRIOV_NODE == "True" + ignore_errors: yes + - name: Get SRIOV compatible driver + get_url: "url={{ driver_url }} dest=/tmp/{{ package }}.tar.gz" + when: SRIOV_NODE == "True" + - name: Extract sriov source code + unarchive: + src: "/tmp/{{ package }}.tar.gz" + dest: "{{ sriov_dest }}" + when: SRIOV_NODE == "True" + - name: Build the default target + make: + chdir: "/tmp/sriov/{{ package }}/src" + become: yes + when: SRIOV_NODE == "True" +# 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 == "True" + tasks: + - name: create SRIOV driver folder in the target destination + file: + state: directory + path: "{{ item }}" + with_items: + - sriov_driver + when: SRIOV == "True" + - name: Copy SRIOV driver to target destination + command: "cp {{ sriov_dest }}/{{ package }}/src/iavf.ko /root/sriov_driver/" + when: SRIOV == "True" + - name: Copy SRIOV driver install script to target folder + command: "cp {{ playbook_dir }}/install_iavf_drivers.sh /root/sriov_driver/install.sh" + when: SRIOV == "True" + - name: Changing perm of "install.sh", adding "+x" + file: dest=/root/sriov_driver/install.sh mode=a+x + when: SRIOV == "True" + - name: Run a script with arguments + shell: ./install.sh + args: + chdir: "/root/sriov_driver" + when: SRIOV == "True" |