Adds dkms installation for QAT drivers and QAT SRIOV VFs

Change-Id: Id72e19bbfd6cbf4bf46c7a5fb0d8797eb184ab38
diff --git a/tasks/qat.yml b/tasks/qat.yml
new file mode 100644
index 0000000..b5dabda
--- /dev/null
+++ b/tasks/qat.yml
@@ -0,0 +1,121 @@
+---
+# qat tasks/qat.yml
+#
+# SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
+# SPDX-Lqatnse-Identifier: Apache-2.0
+
+- name: Blacklist kernel QAT drivers
+  blockinfile:
+    create: true
+    dest: /etc/modprobe.d/blacklist-intel_qat.conf
+    mode: 0644
+    block: |
+      # Blacklist kernel QAT drivers
+      blacklist qat_c62x
+      blacklist qat_c62xvf
+      blacklist qat_c6xx
+      blacklist qat_c6xxvf
+      blacklist qat_c3xxx
+      blacklist qat_c3xxxvf
+      blacklist qat_d15xx
+      blacklist qat_d15xxvf
+      blacklist qat_c4xxx
+      blacklist qat_c4xxxvf
+      blacklist intel_qat
+    backup: true
+  notify: reboot qat
+
+- name: Flush handlers
+  meta: flush_handlers
+
+- name: Install QAT driver compile requirements
+  apt:
+    name:
+      - "libboost-all-dev"
+      - "pciutils-dev"
+      - "libssl-dev"
+      - "build-essential"
+      - "pkg-config"
+      - "yasm"
+    state: "present"
+    update_cache: true
+
+- name: Create root folder for QAT driver
+  file:
+    path: "{{ sriov_qat_driver_dir }}"
+    state: directory
+    owner: root
+    group: root
+    mode: "0644"
+
+- name: Download QAT driver .tgz file
+  get_url:
+    url: "{{ sriov_qat_latest_url }}"
+    dest: "{{ sriov_qat_driver_dir }}/{{ sriov_qat_latest_name }}"
+    owner: "root"
+    group: "root"
+    mode: "0644"
+    checksum: "{{ sriov_qat_checksum }}"
+
+- name: Create qat directory in /usr/src
+  file:
+    path: "/usr/src/qat-{{ sriov_qat_version }}"
+    state: directory
+    owner: "root"
+    group: "root"
+    mode: "0755"
+
+- name: Decompress qat archive
+  unarchive:
+    remote_src: true
+    src: "{{ sriov_qat_driver_dir }}/{{ sriov_qat_latest_name }}"
+    dest: "/usr/src/qat-{{ sriov_qat_version }}"
+    owner: "root"
+    group: "root"
+    extra_opts:
+      - "--strip-components=1" # remove initial directory name
+    creates: "/usr/src/qat-{{ sriov_qat_version }}/README"
+
+- name: Copy over qat dkms.conf
+  template:
+    src: "qat_dkms.conf.j2"
+    dest: "/usr/src/qat-{{ sriov_qat_version }}/dkms.conf"
+    owner: "root"
+    group: "root"
+    mode: "0644"
+
+- name: add qat to DKMS
+  command:
+    cmd: "dkms add -m qat -v {{ sriov_qat_version }}"
+    chdir: "/usr/src/qat-{{ sriov_qat_version }}"
+    creates: "/var/lib/dkms/qat/{{ sriov_qat_version }}/source/README"
+
+- name: build qat using DKMS
+  command:
+    cmd: "dkms build -m qat -v {{ sriov_qat_version }}"
+    chdir: "/usr/src/qat-{{ sriov_qat_version }}"
+
+- name: install qat modules with DKMS
+  command:
+    cmd: "dkms install -m qat -v {{ sriov_qat_version }}"
+    chdir: "/usr/src/qat-{{ sriov_qat_version }}"
+
+- name: Create sriov_qat system servqat
+  template:
+    src: "{{ item.src }}"
+    dest: "{{ item.dest }}"
+    mode: "{{ item.mode }}"
+    owner: root
+    group: root
+  loop:
+    - {
+        src: "sriov_qat.sh.j2",
+        dest: "/usr/local/bin/sriov_qat.sh",
+        mode: "a+x",
+      }
+    - {
+        src: "sriov_qat.service.j2",
+        dest: "/etc/systemd/system/sriov_qat.service",
+        mode: 644,
+      }
+  notify: enable sriov_qat.service