--- # 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"