Support Ubuntu 18.04 and 20.04 LTS as target OS 88/71788/4
authorMichael S. Pedersen <michaelx.pedersen@intel.com>
Thu, 21 Jan 2021 14:18:53 +0000 (14:18 +0000)
committerRihab Banday <rihab.banday@ericsson.com>
Wed, 3 Mar 2021 15:22:47 +0000 (15:22 +0000)
Fixes:
[KUB-42] Add support for Ubuntu 18.04 and 20.04 LTS as host OS on target nodes

Also includes patch for using vfio-pci module on Ubuntu 18.04 LTS

Signed-off-by: Michael S. Pedersen <michaelx.pedersen@intel.com>
Change-Id: Id6150ff30040addfdd7d860bec48583e33a25c59
Reviewed-on: https://gerrit.opnfv.org/gerrit/c/kuberef/+/71788
Tested-by: jenkins-ci <jenkins-opnfv-ci@opnfv.org>
Reviewed-by: Rihab Banday <rihab.banday@ericsson.com>
functions.sh
playbooks/roles/pre-install/tasks/main.yml
playbooks/roles/pre-install/vars/Debian.yml [new file with mode: 0644]
sw_config/bmra/patched_vfio.yml [new file with mode: 0644]

index a446acb..fce71f6 100755 (executable)
@@ -243,6 +243,8 @@ cp ${PROJECT_ROOT}/${INSTALLER}/{all.yml,kube-node.yml} \
     ${PROJECT_ROOT}/container-experience-kits/group_vars/
 cp ${PROJECT_ROOT}/${INSTALLER}/patched_cmk_build.yml \
     ${PROJECT_ROOT}/container-experience-kits/roles/cmk_install/tasks/main.yml
+cp ${PROJECT_ROOT}/${INSTALLER}/patched_vfio.yml \
+    ${PROJECT_ROOT}/container-experience-kits/roles/sriov_nic_init/tasks/bind_vf_driver.yml
 sudo docker run --rm \
 -e ANSIBLE_CONFIG=/bmra/ansible.cfg \
 -e PROFILE=${BMRA_PROFILE} \
index da21c16..ba3e1c0 100644 (file)
@@ -8,8 +8,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-- name: Ensure Python3 is installed (Equinix Metal)
+- name: Ensure Python3 is installed for CentOS (Equinix Metal)
   raw: yum install -y python3
+  ignore_errors: true
+  failed_when: false
   when: lookup('env', 'VENDOR') == 'equinix-metal'
 
 - name: Gather facts
   include_vars:
     file: "{{ ansible_os_family }}.yml"
 
+- name: Update cache (RedHat)
+  yum:
+    update_cache: yes
+  when: ansible_os_family == "RedHat"
+
+- name: Update cache (Debian)
+  apt:
+    update_cache: yes
+  when: ansible_os_family == "Debian"
+
 - name: Install BRMA requirements
   become: true
   package:
diff --git a/playbooks/roles/pre-install/vars/Debian.yml b/playbooks/roles/pre-install/vars/Debian.yml
new file mode 100644 (file)
index 0000000..1a7144b
--- /dev/null
@@ -0,0 +1,6 @@
+---
+bmra_pkgs:
+  - lshw
+  - pciutils
+  - ethtool
+  - python3
diff --git a/sw_config/bmra/patched_vfio.yml b/sw_config/bmra/patched_vfio.yml
new file mode 100644 (file)
index 0000000..c0a6e25
--- /dev/null
@@ -0,0 +1,52 @@
+##
+##   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.
+##
+---
+# check if the selected driver module is available on host
+- name: Check that selected driver module is available
+  # if modinfo fails, lookup loaded modules as modinfo might return error
+  # for igb_uio and potentially other modules not included with the kernel
+  shell: "modinfo {{ vf_driver }} || grep {{ vf_driver }} /proc/modules || grep {{ vf_driver }} /lib/modules/$(uname -r)/modules.builtin"
+  register: shell_result
+  ignore_errors: yes
+  failed_when: no
+  changed_when: no
+
+# get a list of VFs PCI addresses and save the configuration
+- name: attach VFs driver
+  block:
+    - name: fetch VFs pci addresses for a PF
+      shell: "for vf in /sys/class/net/{{ pfname }}/device/virtfn*;do basename $(readlink -f $vf);done"
+      register: vf_pciids
+      args:
+        executable: /bin/bash
+      changed_when: false
+
+    - name: save VF driver binding
+      lineinfile:
+        path: "{{ sriov_config_path }}/bmra_interfaces"
+        line: "{{ this_item }} {{ vf_driver }}"
+        regexp: "^{{ this_item }}"
+        create: yes
+        owner: root
+        group: root
+        mode: '0600'
+      loop: "{{ vf_pciids.stdout_lines }}"
+      loop_control:
+        loop_var: this_item
+      when:
+        - vf_pciids.stderr|length == 0
+        - vf_pciids.stdout_lines|length > 0
+  when: shell_result.rc == 0