You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.6 KiB
YAML
57 lines
1.6 KiB
YAML
---
|
|
- 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
|