From 8be71a00942e40d578f96f3245523f12d15a3c26 Mon Sep 17 00:00:00 2001 From: Badanin Maksim Date: Sat, 17 Jun 2023 16:15:57 +0300 Subject: [PATCH] ansible playbook - proxmox gpu passthrough --- .gitignore | 3 ++ README.md | 12 ++++++++ ansible.cfg | 2 ++ group_vars/all.yml | 1 + inventory/host.yml.example | 6 ++++ play.yml | 56 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 80 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 ansible.cfg create mode 100644 group_vars/all.yml create mode 100644 inventory/host.yml.example create mode 100644 play.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..426e7ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +inventory/*.yml +inventory/*.yaml + diff --git a/README.md b/README.md new file mode 100644 index 0000000..afda197 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Настройка проброса видеркарты + +По умолчанию предназначен для видеокарт NVIDIA и процессора Intel. +Для AMD и Radeon возможно потребудтся незначительные доработки. + +## Использование + +Изменение переменных производится в *group_vars* или *host_vars*: + +```yaml +--- +``` diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..2f74f1b --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +inventory=./inventory diff --git a/group_vars/all.yml b/group_vars/all.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/group_vars/all.yml @@ -0,0 +1 @@ +--- diff --git a/inventory/host.yml.example b/inventory/host.yml.example new file mode 100644 index 0000000..dda5d16 --- /dev/null +++ b/inventory/host.yml.example @@ -0,0 +1,6 @@ +#--- +#all: +# hosts: +# host1: +# ansible_host: 8.8.8.8 +# ansible_user: admin diff --git a/play.yml b/play.yml new file mode 100644 index 0000000..e22273a --- /dev/null +++ b/play.yml @@ -0,0 +1,56 @@ +--- +- 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