aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpmikus <pmikus@cisco.com>2021-07-30 08:47:15 +0000
committerPeter Mikus <pmikus@cisco.com>2021-09-24 04:19:31 +0000
commit93285a12d79b2b14f4e6dad9faf450a51149ca37 (patch)
tree33aacfb5856379b961c80a379236b27610cad606
parentd5a815e56dc6a5aeb48b9bc9e063d4ecc167112d (diff)
Ansible: Intel driver compatibility matrix
+ implements Intel Ethernet 700/800 series driver installation based on compatiblity matrix + includes iavf, i40, ice, ddp driver/profiles installation + patch abstracts multiple compatibility scenarios (dpdk, intel product materials, custom override) and could be applied per testbed + if no matrix choosen, default operating system drivers are used Signed-off-by: pmikus <pmikus@cisco.com> Change-Id: Ifbdbf8c2ebc48d81941e66698708a2e0ff57b7de
-rw-r--r--fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml2
-rw-r--r--fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml2
-rw-r--r--fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml2
-rw-r--r--fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml2
-rw-r--r--fdio.infra.ansible/roles/intel/defaults/main.yaml60
-rw-r--r--fdio.infra.ansible/roles/intel/tasks/i40e.yaml21
-rw-r--r--fdio.infra.ansible/roles/intel/tasks/iavf.yaml21
-rw-r--r--fdio.infra.ansible/roles/intel/tasks/ice.yaml45
-rw-r--r--fdio.infra.ansible/roles/intel/tasks/main.yaml70
9 files changed, 148 insertions, 77 deletions
diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
index 3bbae834f5..e7ee5be7ea 100644
--- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
+++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
@@ -9,6 +9,8 @@ grub:
inventory_ipmi_hostname: "10.30.50.47"
cpu_microarchitecture: "skylake"
+intel_800_matrix: "dpdk21.08"
+
# User management.
users:
- username: localadmin
diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
index 020ff03082..abbbe155de 100644
--- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
+++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
@@ -9,6 +9,8 @@ grub:
inventory_ipmi_hostname: "10.30.50.48"
cpu_microarchitecture: "skylake"
+intel_800_matrix: "dpdk21.08"
+
# User management.
users:
- username: localadmin
diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
index f2dd6212ae..4b3ca66efd 100644
--- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
+++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
@@ -28,3 +28,5 @@ sysctl:
inventory_ipmi_hostname: "10.30.50.53"
cpu_microarchitecture: "skylake"
+
+intel_700_matrix: "dpdk21.08"
diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
index 07ab624137..5bfb97e768 100644
--- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
+++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
@@ -28,3 +28,5 @@ sysctl:
inventory_ipmi_hostname: "10.30.50.54"
cpu_microarchitecture: "skylake"
+
+intel_700_matrix: "dpdk21.02"
diff --git a/fdio.infra.ansible/roles/intel/defaults/main.yaml b/fdio.infra.ansible/roles/intel/defaults/main.yaml
index 0ad227d13b..a64989628f 100644
--- a/fdio.infra.ansible/roles/intel/defaults/main.yaml
+++ b/fdio.infra.ansible/roles/intel/defaults/main.yaml
@@ -16,20 +16,48 @@ packages_by_arch:
x86_64:
- []
+intel_sourceforge_download_url: "https://sourceforge.net/projects/e1000/files"
intel_download_url: "https://downloadmirror.intel.com"
-
-intel_iavf_version: "4.1.1"
-intel_iavf_driver_url: "{{ intel_download_url }}/24693/eng/iavf-{{ intel_iavf_version }}.tar.gz"
-intel_iavf_driver_dir: "/opt"
-
-intel_i40e_version: "2.15.9"
-intel_i40e_driver_url: "{{ intel_download_url }}/24411/eng/i40e-{{ intel_i40e_version }}.tar.gz"
-intel_i40e_driver_dir: "/opt"
-
-intel_ice_version: "1.4.11"
-intel_ice_driver_url: "{{ intel_download_url }}/29746/eng/ice-{{ intel_ice_version }}.tar.gz"
-intel_ice_driver_dir: "/opt"
-
-intel_ddp_version: "1.3.28.0"
-intel_ddp_profile_url: "{{ intel_download_url }}/29889/eng/800%20Series%20Comms%20Binary%20Package%20{{ intel_ddp_version }}.zip"
-intel_ddp_profile_dir: "/opt"
+intel_extract_dir: "/opt"
+
+intel_700_compatibility_matrix:
+ dpdk21.02:
+ # https://doc.dpdk.org/guides/rel_notes/release_21_02.html
+ i40e: "2.14.13"
+ iavf: "4.1.1"
+ nvm: "8.00"
+ dpdk21.08:
+ # https://doc.dpdk.org/guides/rel_notes/release_21_05.html
+ i40e: "2.15.9"
+ iavf: "4.1.1"
+ nvm: "8.30"
+
+intel_800_compatibility_matrix:
+ dpdk21.02:
+ # https://doc.dpdk.org/guides/rel_notes/release_21_02.html
+ ice: "1.4.11"
+ ddp: "1.3.28.0"
+ iavf: "4.1.1"
+ nvm: "2.40"
+ dpdk21.08:
+ # https://doc.dpdk.org/guides/rel_notes/release_21_05.html
+ ice: "1.6.4"
+ ddp: "1.3.30.0"
+ iavf: "4.2.7"
+ nvm: "3.00"
+
+intel_i40e_url:
+ "2.14.13": "i40e%20stable/2.14.13/i40e-2.14.13.tar.gz/download"
+ "2.15.9": "i40e%20stable/2.15.9/i40e-2.15.9.tar.gz/download"
+
+intel_ice_url:
+ "1.4.11": "ice%20stable/1.4.11/ice-1.4.11.tar.gz/download"
+ "1.6.4": "ice%20stable/1.6.4/ice-1.6.4.tar.gz/download"
+
+intel_iavf_url:
+ "4.1.1": "iavf%20stable/4.1.1/iavf-4.1.1.tar.gz/download"
+ "4.2.7": "iavf%20stable/4.2.7/iavf-4.2.7.tar.gz/download"
+
+intel_ddp_url:
+ "1.3.28.0": "29889/eng/800%20Series%20Comms%20Binary%20Package%201.3.28.0.zip"
+ "1.3.30.0": "30590/eng/800%20Series%20Comms%20Binary%20Package%201.3.30.0.zip"
diff --git a/fdio.infra.ansible/roles/intel/tasks/i40e.yaml b/fdio.infra.ansible/roles/intel/tasks/i40e.yaml
index 1831dd1dad..2299a3b1b8 100644
--- a/fdio.infra.ansible/roles/intel/tasks/i40e.yaml
+++ b/fdio.infra.ansible/roles/intel/tasks/i40e.yaml
@@ -2,19 +2,22 @@
# file: roles/intel/tasks/i40e.yaml
- name: Inst - Get i40e Network Adapter Driver
- get_url:
- url: "{{ intel_i40e_driver_url }}"
- dest: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}.tar.gz"
- mode: 0644
+ uri:
+ url: "{{ intel_sourceforge_download_url }}/{{ intel_i40e_url[i40e] }}"
+ follow_redirects: "all"
+ force: true
+ dest: "{{ intel_extract_dir }}/i40e-{{ i40e }}.tar.gz"
+ mode: "0644"
+ failed_when: false
tags:
- intel-inst
- name: Inst - Extract i40e Network Adapter Driver
unarchive:
remote_src: true
- src: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}.tar.gz"
- dest: "{{ intel_i40e_driver_dir }}/"
- creates: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}"
+ src: "{{ intel_extract_dir }}/i40e-{{ i40e }}.tar.gz"
+ dest: "{{ intel_extract_dir }}/"
+ creates: "{{ intel_extract_dir }}/i40e-{{ i40e }}"
register: intel_driver_extracted
tags:
- intel-inst
@@ -22,12 +25,12 @@
- name: Inst - i40e Network Adapter Driver
command: "{{ item }}"
args:
- chdir: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}/src"
+ chdir: "{{ intel_extract_dir }}/i40e-{{ i40e }}/src"
+ become: true
with_items:
- "make install"
- "modprobe -r i40e"
- "modprobe i40e"
- failed_when: true
when:
- intel_driver_extracted
tags:
diff --git a/fdio.infra.ansible/roles/intel/tasks/iavf.yaml b/fdio.infra.ansible/roles/intel/tasks/iavf.yaml
index dfdb496085..44040cfd7e 100644
--- a/fdio.infra.ansible/roles/intel/tasks/iavf.yaml
+++ b/fdio.infra.ansible/roles/intel/tasks/iavf.yaml
@@ -2,19 +2,22 @@
# file: roles/intel/tasks/iavf.yaml
- name: Inst - Get iavf Network Adapter Driver
- get_url:
- url: "{{ intel_iavf_driver_url }}"
- dest: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}.tar.gz"
- mode: 0644
+ uri:
+ url: "{{ intel_sourceforge_download_url }}/{{ intel_iavf_url[iavf] }}"
+ follow_redirects: "all"
+ force: true
+ dest: "{{ intel_extract_dir }}/iavf-{{ iavf }}.tar.gz"
+ mode: "0644"
+ failed_when: false
tags:
- intel-inst
- name: Inst - Extract iavf Network Adapter Driver
unarchive:
remote_src: true
- src: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}.tar.gz"
- dest: "{{ intel_iavf_driver_dir }}/"
- creates: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}"
+ src: "{{ intel_extract_dir }}/iavf-{{ iavf }}.tar.gz"
+ dest: "{{ intel_extract_dir }}/"
+ creates: "{{ intel_extract_dir }}/iavf-{{ iavf }}"
register: intel_driver_extracted
tags:
- intel-inst
@@ -22,12 +25,12 @@
- name: Inst - iavf Network Adapter Driver
command: "{{ item }}"
args:
- chdir: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}/src"
+ chdir: "{{ intel_extract_dir }}/iavf-{{ iavf }}/src"
+ become: true
with_items:
- "make install"
- "modprobe -r iavf"
- "modprobe iavf"
- failed_when: true
when:
- intel_driver_extracted
tags:
diff --git a/fdio.infra.ansible/roles/intel/tasks/ice.yaml b/fdio.infra.ansible/roles/intel/tasks/ice.yaml
index 9baa9d050d..bbd07c6539 100644
--- a/fdio.infra.ansible/roles/intel/tasks/ice.yaml
+++ b/fdio.infra.ansible/roles/intel/tasks/ice.yaml
@@ -2,19 +2,22 @@
# file: roles/intel/tasks/ice.yaml
- name: Inst - Get ice Network Adapter Driver
- get_url:
- url: "{{ intel_ice_driver_url }}"
- dest: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}.tar.gz"
- mode: 0644
+ uri:
+ url: "{{ intel_sourceforge_download_url }}/{{ intel_ice_url[ice] }}"
+ follow_redirects: "all"
+ force: true
+ dest: "{{ intel_extract_dir }}/ice-{{ ice }}.tar.gz"
+ mode: "0644"
+ failed_when: false
tags:
- intel-inst
- name: Inst - Extract ice Network Adapter Driver
unarchive:
remote_src: true
- src: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}.tar.gz"
- dest: "{{ intel_ice_driver_dir }}/"
- creates: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}"
+ src: "{{ intel_extract_dir }}/ice-{{ ice }}.tar.gz"
+ dest: "{{ intel_extract_dir }}/"
+ creates: "{{ intel_extract_dir }}/ice-{{ ice }}"
register: intel_driver_extracted
tags:
- intel-inst
@@ -22,12 +25,12 @@
- name: Inst - ice Network Adapter Driver
command: "{{ item }}"
args:
- chdir: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}/src"
+ chdir: "{{ intel_extract_dir }}/ice-{{ ice }}/src"
+ become: true
with_items:
- "make install"
- "modprobe -r ice"
- "modprobe ice"
- failed_when: false
when:
- intel_driver_extracted
tags:
@@ -35,8 +38,8 @@
- name: Inst - Get Dynamic Device Personalization (DDP) Package
get_url:
- url: "{{ intel_ddp_profile_url }}"
- dest: "{{ intel_ddp_profile_dir }}/800-Series-Comms-Binary-Package-{{ intel_ddp_version }}.zip"
+ url: "{{ intel_download_url }}/{{ intel_ddp_url[ddp] }}"
+ dest: "{{ intel_extract_dir }}/800-Series-Comms-Binary-Package-{{ ddp }}.zip"
mode: 0644
tags:
- intel-inst
@@ -44,9 +47,9 @@
- name: Inst - Extract Dynamic Device Personalization (DDP) Package
unarchive:
remote_src: true
- src: "{{ intel_ddp_profile_dir }}/800-Series-Comms-Binary-Package-{{ intel_ddp_version }}.zip"
- dest: "{{ intel_ddp_profile_dir }}/"
- creates: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.zip"
+ src: "{{ intel_extract_dir }}/800-Series-Comms-Binary-Package-{{ ddp }}.zip"
+ dest: "{{ intel_extract_dir }}/"
+ creates: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.zip"
register: intel_driver_extracted
tags:
- intel-inst
@@ -54,16 +57,16 @@
- name: Inst - Extract Dynamic Device Personalization (DDP) Package
unarchive:
remote_src: true
- src: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.zip"
- dest: "{{ intel_ddp_profile_dir }}/"
+ src: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.zip"
+ dest: "{{ intel_extract_dir }}/"
register: intel_driver_extracted
tags:
- intel-inst
- name: Inst - Copy Dynamic Device Personalization (DDP) Package
copy:
- src: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.pkg"
- dest: "/lib/firmware/updates/intel/ice/ddp/ice-{{ intel_ddp_version }}.pkg"
+ src: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.pkg"
+ dest: "/lib/firmware/updates/intel/ice/ddp/ice-{{ ddp }}.pkg"
remote_src: true
follow: true
tags:
@@ -71,7 +74,7 @@
- name: Inst - Link Dynamic Device Personalization (DDP) Package
file:
- src: "ice-{{ intel_ddp_version }}.pkg"
+ src: "ice-{{ ddp }}.pkg"
dest: "/lib/firmware/updates/intel/ice/ddp/ice.pkg"
state: link
tags:
@@ -82,7 +85,7 @@
path: "{{ item }}"
state: absent
with_items:
- - "{{ intel_ddp_profile_dir }}/E810 DDP for Comms TechGuide_Rev2.3.pdf"
- - "{{ intel_ddp_profile_dir }}/Intel_800_series_market_segment_DDP_license.txt"
+ - "{{ intel_extract_dir }}/E810 DDP for Comms TechGuide_Rev2.3.pdf"
+ - "{{ intel_extract_dir }}/Intel_800_series_market_segment_DDP_license.txt"
tags:
- intel-inst
diff --git a/fdio.infra.ansible/roles/intel/tasks/main.yaml b/fdio.infra.ansible/roles/intel/tasks/main.yaml
index 0d361a951d..a73e6299a2 100644
--- a/fdio.infra.ansible/roles/intel/tasks/main.yaml
+++ b/fdio.infra.ansible/roles/intel/tasks/main.yaml
@@ -17,39 +17,65 @@
tags:
- intel-inst-drivers
-- name: Inst - Check Presence of Intel Ethernet 810 Series
- shell: "lspci -d 8086:1592"
- register: intel_e810_pcis
+- name: Inst - Check Presence of Intel Ethernet 700 Series
+ shell: "lspci -d 8086:1583; lspci -d 8086:1585; lspci -d 8086:1572"
+ register: intel_700_pcis
failed_when: false
changed_when: false
tags:
- intel-inst-drivers
-- name: Inst - Check Presence of Intel Ethernet 700 Series
- shell: "lspci -d 8086:1583; lspci -d 8086:1585; lspci -d 8086:1572"
- register: intel_700_pcis
+- name: Inst - Check Presence of Intel Ethernet 800 Series
+ shell: "lspci -d 8086:1592"
+ register: intel_800_pcis
failed_when: false
changed_when: false
tags:
- intel-inst-drivers
-- name: Inst - Driver Intel Ethernet 810 Series
- import_tasks: ice.yaml
- when:
- - intel_e810_pcis.stdout_lines | length > 0
+- name: Inst - Get Intel Ethernet 700 Series driver versions
+ set_fact:
+ i40e: "{{ intel_700_compatibility_matrix[intel_700_matrix]['i40e'] }}"
+ iavf: "{{ intel_700_compatibility_matrix[intel_700_matrix]['iavf'] }}"
+ nvm: "{{ intel_700_compatibility_matrix[intel_700_matrix]['nvm'] }}"
+ when: >
+ intel_700_matrix is defined
tags:
- intel-inst-drivers
-# - name: Inst - Driver Intel Ethernet 700 Series
-# import_tasks: i40e.yaml
-# when:
-# - intel_700_pcis.stdout_lines | length > 0
-# tags:
-# - intel-inst-drivers
+- name: Inst - Get Intel Ethernet 800 Series driver versions
+ set_fact:
+ ice: "{{ intel_800_compatibility_matrix[intel_800_matrix]['ice'] }}"
+ ddp: "{{ intel_800_compatibility_matrix[intel_800_matrix]['ddp'] }}"
+ iavf: "{{ intel_800_compatibility_matrix[intel_800_matrix]['iavf'] }}"
+ nvm: "{{ intel_800_compatibility_matrix[intel_800_matrix]['nvm'] }}"
+ when: >
+ intel_800_matrix is defined
+ tags:
+ - intel-inst-drivers
+
+- name: Inst - Driver Intel Ethernet 700 Series
+ import_tasks: i40e.yaml
+ when: >
+ intel_700_pcis.stdout_lines | length > 0 and
+ intel_700_matrix is defined
+ tags:
+ - intel-inst-drivers
+
+- name: Inst - Driver Intel Ethernet 800 Series
+ import_tasks: ice.yaml
+ when: >
+ intel_800_pcis.stdout_lines | length > 0 and
+ intel_800_matrix is defined
+ tags:
+ - intel-inst-drivers
-# - name: Inst - VF Driver Intel
-# import_tasks: iavf.yaml
-# when:
-# - intel_700_pcis.stdout_lines | length > 0 or intel_e810_pcis.stdout_lines | length > 0
-# tags:
-# - intel-inst-drivers
+- name: Inst - Driver Intel iAVF
+ import_tasks: iavf.yaml
+ when: >
+ intel_700_pcis.stdout_lines | length > 0 or
+ intel_800_pcis.stdout_lines | length > 0 and
+ intel_700_matrix is defined or
+ intel_800_matrix is defined
+ tags:
+ - intel-inst-drivers