--- - name: passthrough nvidia gpu on intel cpu hosts: all tasks: - name: add iommu in grub ansible.builtin.lineinfile: path: /etc/default/grub regexp: "GRUB_CMDLINE_LINUX_DEFAULT" line: 'GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt nofb nomodeset initcall_blacklist=sysfb_init"' register: grub_changed - name: update grub ansible.builtin.shell: update-grub when: grub_changed.changed register: grub_upgraded - name: add modules ansible.builtin.lineinfile: path: /etc/modules line: "{{ item }}" loop: - vfio - vfio_iommu_type1 - vfio_pci - vfio_virqfd - name: search nvidia gpu id ansible.builtin.shell: "lspci | grep VGA.*NVIDIA | head -c 5 | xargs -I% lspci -n -s % | cut -c15-23" register: nvidia_id changed_when: false # - name: check result gpu id # ansible.builtin.debug: # var: nvidia_id.stdout_lines - name: add nvidia id to vfio ansible.builtin.lineinfile: path: /etc/modprobe.d/vfio.conf create: true line: "options vfio-pci ids={{ nvidia_id.stdout_lines[0] }},{{ nvidia_id.stdout_lines[1] }} disable_vga=1" - name: add blacklist ansible.builtin.lineinfile: path: /etc/modprobe.d/blacklist.conf create: true line: "{{ item }}" loop: - blacklist amdgpu - blacklist radeon - blacklist nouveau - blacklist nvidia - name: reboot system ansible.builtin.reboot: when: grub_upgraded.changed